Les cadres sont utilisés pour englober un ou plusieurs groupes de widgets dans une boîte qui peut, éventuellement, avoir une étiquette. La position de l'étiquette et le style de la boîte sont modifiables.
A Frame can be created with the following
function:
Un cadre Frame se crée en utilisant :
cadre = gtk.Frame(label=None)
... où l'étiquette label est placée,
par défaut, dans le coin supérieur gauche du cadre. Donner la valeur
"None" au paramètre label ou ne pas indiquer de
paramètre label entraînera qu'aucune étiquette
ne sera affichée. Le texte de l'étiquette est modifiable par :
cadre.set_label(label)
Pour modifier la position de l'étiquette, on utilise la méthode :
cadre.set_label_align(xalign,yalign)
...où xalign et yalign
ont une valeur comprise entre 0.0 et 1.0. L'argument
xalign donne la position de l'étiquette sur le
bord horizontal du cadre. Le paramètre yalign
n'est pas utilisé actuellement. La valeur par défaut de
xalign est 0.0, ce qui place l'étiquette
sur le coté gauche du cadre.
La méthode suivante modifie le style de la boîte qui délimite le cadre.
cadre.set_shadow_type(type)
... où le paramètre type peur prendre l'un des
valeurs suivantes :
SHADOW_NONE SHADOW_IN SHADOW_OUT SHADOW_ETCHED_IN # par défaut SHADOW_ETCHED_OUT
Le programme frame.py
montre l'utilisation du widget de cadre Frame.
La Figure 10.4, « Exemple de cadre » illustre le résultat obtenu :
Voici le code du programme frame.py
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # exemple frame.py
4
5 import pygtk
6 pygtk.require('2.0')
7 import gtk
8
9 class ExempleCadre:
10 def __init__(self):
11 # Créer une nouvelle fenêtre
12 fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
13 fenetre.set_title("Exemple de cadre")
14
15 # On connecte l'évènement "destroy" au gestionnaire de signal
16 fenetre.connect("destroy", lambda w: gtk.main_quit())
17 fenetre.set_size_request(300, 300)
18
19 # On définit la largeur de bordure de la fenêtre
20 fenetre.set_border_width(10)
21
22 # On crée un cadre
23 cadre = gtk.Frame()
24 fenetre.add(cadre)
25
26 # On indique l'étiquette du cadre
27 cadre.set_label("Widget GTK Cadre")
28
29 # On aligne l'étiquette sur la droite du cadre
30 cadre.set_label_align(1.0, 0.0)
31
32 # On précise le style du cadre
33 cadre.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
34 cadre.show()
35
36 # On affiche la fenêtre
37 fenetre.show()
38
39 def main():
40 # Enter the event loop
41 gtk.main()
42 return 0
43
44 if __name__ == "__main__":
45 ExempleCadre()
46 main()
Les programmes calendar.py, label.py et spinbutton.py utilisent aussi des cadres.