V. Chapitre 5. Vue d'ensemble des widgets▲
Avec PyGTK, l'utilisation d'un widget passe en général par les étapes suivantes :
- invoquer gtk.* - l'une des différentes fonctions de création de widget. Elles sont toutes détaillées dans cette section ;
- connecter tous les signaux et événements que l'on veut utiliser aux gestionnaires appropriés ;
- configurer les attributs du widget ;
- placer le widget dans un conteneur grâce à l'appel ad hoc : gtk.Container.add(), gtk.Box.pack_start(), etc. ;
- afficher le widget avec gtk.Widget.show().
show() fait savoir à GTK que la préparation du widget est achevée et qu'il peut maintenant être affiché. Pour le faire disparaître à nouveau, vous pouvez utiliser gtk.Widget.hide(). L'ordre d'affichage des widgets n'est pas important, mais je conseille d'afficher la fenêtre en dernier de sorte que celle-ci apparaisse complète, plutôt que de voir chaque widget s'y afficher à tour de rôle. Les enfants d'un widgets (une fenêtre est aussi un widget) ne seront pas affichés tant que la fenêtre elle-même ne l'aura pas été avec la méthode show().
V-A. Hiérarchie des widgets▲
Pour information, voici représentée sous forme d'arbre la hiérarchie des classes utilisées pour implémenter les widgets (les widgets obsolètes et les classes auxiliaires ont été omis).
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.
gobject.GObject
|
gtk.Object
+
gtk.Widget
|
+
gtk.Misc
|
|
+
gtk.Label
|
|
|
`gtk.AccelLabel
|
|
+
gtk.Arrow
|
|
`gtk.Image
|
+
gtk.Container
|
|
+
gtk.Bin
|
|
|
+
gtk.Alignment
|
|
|
+
gtk.Frame
|
|
|
|
`gtk.AspectFrame
|
|
|
+
gtk.Button
|
|
|
|
+
gtk.ToggleButton
|
|
|
|
|
`gtk.CheckButton
|
|
|
|
|
`gtk.RadioButton
|
|
|
|
`gtk.OptionMenu
|
|
|
+
gtk.Item
|
|
|
|
+
gtk.MenuItem
|
|
|
|
+
gtk.CheckMenuItem
|
|
|
|
|
`gtk.RadioMenuItem
|
|
|
|
+
gtk.ImageMenuItem
|
|
|
|
`gtk.TearoffMenuItem
|
|
|
+
gtk.Window
|
|
|
|
+
gtk.Dialog
|
|
|
|
|
+
gtk.ColorSelectionDialog
|
|
|
|
|
+
gtk.FileSelection
|
|
|
|
|
+
gtk.FontSelectionDialog
|
|
|
|
|
+
gtk.InputDialog
|
|
|
|
|
`gtk.MessageDialog
|
|
|
|
`gtk.Plug
|
|
|
+
gtk.EventBox
|
|
|
+
gtk.HandleBox
|
|
|
+
gtk.ScrolledWindow
|
|
|
`gtk.Viewport
|
|
+
gtk.Box
|
|
|
+
gtk.ButtonBox
|
|
|
|
+
gtk.HButtonBox
|
|
|
|
`gtk.VButtonBox
|
|
|
+
gtk.VBox
|
|
|
|
+
gtk.ColorSelection
|
|
|
|
+
gtk.FontSelection
|
|
|
|
`gtk.GammaCurve
|
|
|
`gtk.HBox
|
|
|
+
gtk.Combo
|
|
|
`gtk.Statusbar
|
|
+
gtk.Fixed
|
|
+
gtk.Paned
|
|
|
+
gtk.HPaned
|
|
|
`gtk.VPaned
|
|
+
gtk.Layout
|
|
+
gtk.MenuShell
|
|
|
+
gtk.MenuBar
|
|
|
`gtk.Menu
|
|
+
gtk.Notebook
|
|
+
gtk.Socket
|
|
+
gtk.Table
|
|
+
gtk.TextView
|
|
+
gtk.Toolbar
|
|
`gtk.TreeView
|
+
gtk.Calendar
|
+
gtk.DrawingArea
|
|
`gtk.Curve
|
+
gtk.Editable
|
|
+
gtk.Entry
|
|
|
`gtk.SpinButton
|
+
gtk.Ruler
|
|
+
gtk.HRuler
|
|
`gtk.VRuler
|
+
gtk.Range
|
|
+
gtk.Scale
|
|
|
+
gtk.HScale
|
|
|
`gtk.VScale
|
|
`gtk.Scrollbar
|
|
+
gtk.HScrollbar
|
|
`gtk.VScrollbar
|
+
gtk.Separator
|
|
+
gtk.HSeparator
|
|
`gtk.VSeparator
|
+
gtk.Invisible
|
+
gtk.Preview
|
`gtk.ProgressBar
|
+
gtk.Adjustment
+
gtk.CellRenderer
|
+
gtk.CellRendererPixbuf
|
+
gtk.CellRendererText
|
+
gtk.CellRendererToggle
+
gtk.ItemFactory
+
gtk.Tooltips
`gtk.TreeViewColumn
V-B. Les widgets sans fenêtre▲
Les widgets ci-dessous n'ont pas de fenêtre associée. Si vous voulez capter des événements, il vous faudra utiliser une boiteàLa boîte à évènement (EventBox)événements.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
gtk.Alignment
gtk.Arrow
gtk.Bin
gtk.Box
gtk.Button
gtk.CheckButton
gtk.Fixed
gtk.Image
gtk.Label
gtk.MenuItem
gtk.Notebook
gtk.Paned
gtk.RadioButton
gtk.Range
gtk.ScrolledWindow
gtk.Separator
gtk.Table
gtk.Toolbar
gtk.AspectFrame
gtk.Frame
gtk.VBox
gtk.HBox
gtk.VSeparator
gtk.HSeparator
Nous poursuivrons notre exploration de PyGTK en examinant chaque widget tour à tour et en créant quelques petits programmes simples pour les afficher.