-
Notifications
You must be signed in to change notification settings - Fork 0
/
ch-MiscellaneousWidgets.html
273 lines (248 loc) · 13.8 KB
/
ch-MiscellaneousWidgets.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-15" http-equiv="Content-Type">
<title>Chapitre 9. Widgets divers</title>
<link rel="stylesheet" href="pygtktutfr.css" type="text/css">
<meta name="keywords" content="python,pygtk,tutoriel,traduction,etiquette">
<link rel="start" href="index.html" title="Tutoriel PyGTK 2.0">
<link rel="home" href="index.html" title="Table des matières">
<link rel="up" href="index.html" title="Table des matières">
<link rel="previous" href="sec-RangeWidgetExample.html" title="8.5. Démonstration des widgets d'intervalle">
<link rel="next" href="sec-Arrows.html" title="9.2. Les flèches">
</head>
<body>
<div class="localisation">
Vous êtes à peu près ici :
<a href="../../index.html">Accueil</a> »
<a href="../pygtktut.php">tutoriel PyGTK</a> »
<a href="index.html">PyGTK : sommaire</a>
</div> <!-- fin localisation -->
<div class="navheader">
<table width="100%" summary="En-tête de navigation">
<tr>
<th colspan="3" align="center">Chapitre 9. Widgets divers</th>
</tr><tr>
<td width="20%" align="left"><a accesskey="p" href="sec-RangeWidgetExample.html">Préc.</a></td>
<th width="60%" align="center"></th>
<td width="20%" align="right"><a accesskey="n" href="sec-Arrows.html">Suiv.</a></td></tr></table>
<hr>
</div>
<div class="chapter"><div class="titlepage">
<div><h2 class="title"><a name="WidgetsDivers"></a>Chapitre 9. Widgets divers</h2></div></div>
<div class="toc">
<p><b>Sommaire</b></p>
<dl>
<dt>9.1. <a href="ch-MiscellaneousWidgets.html#sec-Labels">Les étiquettes</a></dt>
<dt>9.2. <a href="sec-Arrows.html">Les flèches</a></dt>
<dt>9.3. <a href="sec-TooltipsObject.html">Les infobulles</a></dt>
<dt>9.4. <a href="sec-ProgressBars.html">La barre de progression</a></dt>
<dt>9.5. <a href="sec-Dialogs.html">Les boites de dialogue</a></dt>
<dt>9.6. <a href="sec-Images.html">Les images</a></dt><dd><dl>
<dt>9.6.1. <a href="sec-Images.html#Pixmaps">Les Pixmaps</a></dt></dl></dd>
<dt>9.7. <a href="sec-Rulers.html">Les règles</a></dt>
<dt>9.8. <a href="sec-Statusbars.html">La barre d'état</a></dt>
<dt>9.9. <a href="sec-TextEntries.html">Les champs de saisie</a></dt>
<dt>9.10. <a href="sec-SpinButtons.html">Les boites d'incrément</a></dt>
<dt>9.11. <a href="sec-ComboWidget.html">Les listes déroulantes</a></dt>
<dt>9.12. <a href="sec-Calendar.html">Le calendrier</a></dt>
<dt>9.13. <a href="sec-ColorSelection.html">Le sélecteur de couleur</a></dt>
<dt>9.14. <a href="sec-FileSelections.html">Le sélecteur de fichier</a></dt>
<dt>9.15. <a href="sec-FontSelectionDialog.html">Le sélecteur de police</a></dt>
</dl>
</div>
<div class="sect1"><div class="titlepage">
<div><h2 class="title" style="clear: both"><a name="sec-Labels"></a>9.1. Les étiquettes</h2>
</div></div>
<p>Les étiquettes (gtk.<tt>Label</tt>) sont des widgets relativement simples et
très utilisés dans GTK. Elles ne peuvent émettre aucun signal car
elles n'ont pas de fenêtres X associées. Pour capter quand même des
signaux ou pour ce qui concerne le découpage, il vous faudra les placer
dans des <a href="ch-ContainerWidgets.html#sec-EventBox" title="10.1. Les boites
à évènements"><tt>boites à évènements</tt></a>
ou dans des boutons (voir <a href="ch-ButtonWidget.html#BoutonsSimples"
title="6.1 Les boutons simples"><tt>Boutons simples</tt></a>).</p>
<p>Pour créer une étiquette, on utilise la méthode suivante :</p>
<pre class="programlisting">
etiquette = gtk.Label(<b><tt>str</tt></b>)
</pre>
<p>L'unique argument à fournir, <i>str</i>, est la chaine de caractères que
doit afficher l'étiquette. Pour changer ce texte une fois
l'étiquette créée, on fera appel à la méthode :</p>
<pre class="programlisting">
etiquette.set_text(<b><tt>str</tt></b>)
</pre>
<p><i><tt>etiquette</tt></i> est l'etiquette précédemment créée,
et <i><tt>str</tt></i> la nouvelle chaine de caractères. L'espace alloué
à la nouvelle chaine sera automatiquement ajusté si nécessaire.
Vous pouvez créer une étiquette de plusieurs lignes en insérant
des sauts de lignes dans la chaine de caractères.</p>
<p>Pour récupérer la chaine courante, faites :</p>
<pre class="programlisting">
chaine = etiquette.get_text()
</pre>
<p><i><tt>etiquette</tt></i> est l'étiquette que vous avez créée,
et <i><tt>chaine</tt></i> la chaine de caractères. On peut définir le type
d'alignement du texte d'une étiquette avec :</p>
<pre class="programlisting">
etiquette.set_justify(<b><tt>jtype</tt></b>)
</pre>
<p>L'argument <i><tt>jtype</tt></i> peut prendre les valeurs suivantes :</p>
<pre class="programlisting">
JUSTIFY_LEFT # aligné à gauche
JUSTIFY_RIGHT # aligné à droite
JUSTIFY_CENTER # centré (valeur par défaut)
JUSTIFY_FILL # justifié
</pre>
<p>Le texte des étiquettes peut aussi être renvoyé à la
ligne automatiquement. Il faut pour cela utiliser cette méthode :</p>
<pre class="programlisting">
etiquette.set_line_wrap(<b><tt>wrap</tt></b>)
</pre>
<p>L'argument <i><tt>wrap</tt></i> peut prendre les valeurs TRUE (activé) ou
FALSE (désactivé).</p>
<p>Pour que le texte de votre étiquette soit souligné, vous pouvez lui
fournir un patron à suivre :</p>
<pre class="programlisting">
etiquette.set_pattern(<b><tt>pattern</tt></b>)
</pre>
<p>L'argument <i><tt>pattern</tt></i> (patron) précise le profil du soulignement.
Il s'agit d'une chaine de caractères constituée de "_" et d'espaces,
un "_" indiquant que le caractère correspondant de l'étiquette
doit être souligné. Par exemple, la chaine <tt>"__ __"</tt>
soulignerait les deux premiers caractères ainsi que le huitième et le
neuvième. Si vous voulez simplement définir un raccourci clavier
souligné (un caractère "mnémonique") dans votre
étiquette, utilisez plutôt la méthode <tt>set_text_with_mnemonic</tt>
(<b><tt>str</tt></b>), et non <tt>set_pattern</tt>().</p>
<p>Le programme <a href="exemples/etiquettes.py" target="_top"><b>etiquettes.py</b></a>
est un court exemple qui illustre ces méthodes. Pour mieux distinguer les
différents styles d'étiquettes, il utilise des <!--<a href="sec-Frames.html"
title="10.5. Les cadres">--><tt>cadres</tt> (pas encore traduit) <!--</a>--> (<tt>gtk.Frame</tt>). N'en tenez cependant
pas compte pour l'instant, nous aborderons ce widget plus loin.</p>
<p>Les étiquettes de GTK+ 2.0 peuvent être sélectionnées
(pour le copier-coller), et leur texte peut contenir des balises qui modifient la police
et d'autres attributs de texte. Ces caractéristiques avancées ne seront
toutefois pas abordées ici.</p>
<p>La <a href="ch-MiscellaneousWidgets.html#FigEtiquettes" title="Figure 9.1.
Exemples d'étiquettes">figure 9.1</a> montre la fenêtre affichée par
le programme <a href="exemples/etiquettes.py" target="_top"><b>etiquettes.py</b></a> :</p>
<div class="figure"><a name="FigEtiquettes"></a>
<p class="title"><b>Figure 9.1. Exemples d'étiquettes</b></p>
<div class="mediaobject" align="center"><img src="figures/etiquettes.png" align="middle"
alt="exemple étiquette"></div></div>
<p>Le code source du programme est le suivant :</p>
<pre class="programlisting">
1 #!/usr/bin/env python
2
3 # exemple etiquettes.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 class Etiquettes:
10 def __init__(self):
11 self.fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
12 self.fenetre.connect("destroy", gtk.main_quit)
13
14 self.fenetre.set_title("Etiquettes")
15 boite_v = gtk.VBox(False, 5)
16 boite_h = gtk.HBox(False, 5)
17 self.fenetre.add(boite_h)
18 boite_h.pack_start(boite_v, False, False, 0)
19 self.fenetre.set_border_width(5)
20
21 cadre = gtk.Frame("Etiquette normale")
22 etiquette = gtk.Label("Voici une etiquette normale")
23 cadre.add(etiquette)
24 boite_v.pack_start(cadre, False, False, 0)
25
26 cadre = gtk.Frame("Etiquette de plusieurs lignes")
27 etiquette = gtk.Label("Voici une etiquette de plusieurs lignes.\nDeuxieme ligne\n"
28 "Troisieme ligne")
29 cadre.add(etiquette)
30 boite_v.pack_start(cadre, False, False, 0)
31
32 cadre = gtk.Frame("Etiquette alignee a gauche")
33 etiquette = gtk.Label("Voici une etiquette de plusieurs lignes\n"
34 "dont le texte est aligne a gauche.\nTroisieme ligne")
35 etiquette.set_justify(gtk.JUSTIFY_LEFT)
36 cadre.add(etiquette)
37 boite_v.pack_start(cadre, False, False, 0)
38
39 cadre = gtk.Frame("Etiquette alignee a droite")
40 etiquette = gtk.Label("Voici une etiquette de plusieurs lignes\ndont le texte est aligne a droite.\n"
41 "Quatrieme ligne, (j/k)")
42 etiquette.set_justify(gtk.JUSTIFY_RIGHT)
43 cadre.add(etiquette)
44 boite_v.pack_start(cadre, False, False, 0)
45
46 boite_v = gtk.VBox(False, 5)
47 boite_h.pack_start(boite_v, False, False, 0)
48 cadre = gtk.Frame("Etiquette avec retour a la ligne auto")
49 etiquette = gtk.Label("Voici un exemple d'etiquette avec retour a la ligne auto. Elle "
50 "ne doit pas remplir l'espace qui lui est "
51 "alloue, mais elle s'ajuste automatiquement "
52 "en renvoyant les mots a la ligne. "
53 "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed "
54 "do eiusmod tempor incididunt ut labore et dolore magna aliqua. "
55 "Seize jacinthes sechent dans seize sachets secs.\n"
56 " Ces etiquettes peuvent contenir plusieurs paragraphes "
57 "et ajoutent correctement "
58 "de nombreux espaces supplementaires ")
59 etiquette.set_line_wrap(True)
60 cadre.add(etiquette)
61 boite_v.pack_start(cadre, False, False, 0)
62
63 cadre = gtk.Frame("Etiquette justifiee avec retour a la ligne auto")
64 etiquette = gtk.Label("Voici un exemple d'etiquette justifiee avec retour a la ligne auto. "
65 "Elle doit remplir "
66 "entierement l'espace qui lui est alloue. "
67 "Quelques phrases pour les besoins de la "
68 "demonstration : Voila, voila. Le lundi au soleil, "
69 "c'est une chose qu'on n'aura jamais, ta la la ta da la la...\n"
70 " Nouveau paragraphe.\n"
71 " Nouveau paragraphe, mais mieux que"
72 " l'autre. Helas, il est deja fini.
73 ")
74 etiquette.set_justify(gtk.JUSTIFY_FILL)
75 etiquette.set_line_wrap(True)
76 cadre.add(etiquette)
77 boite_v.pack_start(cadre, False, False, 0)
78
79 cadre = gtk.Frame("Etiquette avec texte souligne")
80 etiquette = gtk.Label("Cette etiquette comporte du texte souligne !\n"
81 "Cette phrase est bizarrement soulignee")
82 etiquette.set_justify(gtk.JUSTIFY_LEFT)
83 etiquette.set_pattern(
84 "____________________________________________ _ _________ _ ______ __ _______ ___")
85 cadre.add(etiquette)
86 boite_v.pack_start(cadre, False, False, 0)
87 self.fenetre.show_all ()
88
89 def main():
90 gtk.main()
91 return 0
92
93 if __name__ == "__main__":
94 Etiquettes()
95 main()
</pre>
<p>À noter que le "Etiquette justifiee avec retour a la ligne auto" n'est pas rempli.</p>
</div></div>
<div class="navfooter">
<hr>
<table width="100%" summary="Bas de page de navigation">
<tr>
<td width="40%" align="left"><a accesskey="p" href="sec-RangeWidgetExample.html">Préc.</a></td>
<td width="20%" align="center"><a accesskey="u" href="index.html">Chapitre parent</a></td>
<td width="40%" align="right"><a accesskey="n" href="sec-Arrows.html">Suiv.</a></td>
</tr><tr>
<td width="40%" align="left" valign="top">8.5. Démonstration des widgets d'intervalle</td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Table des matières</a></td>
<td width="40%" align="right" valign="top">9.2. Les flèches</td>
</tr></table>
</div>
</body>
</html>