Je suis un peu dépité devant le peu d'exemples concrets qu'on trouve sur internet à propos de Tix, qui contient malgré tout de chouettes améliorations qui manquent à Tkinter.
J'essaie donc de comprendre le widget NoteBook de Tix, et j'ai fait cet essai :
Deux questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 # -*- coding:utf-8 -*- import Tix import Tkinter as Tk root = Tix.Tk() root.geometry("600x400") nb = Tix.NoteBook(root) nb.add("page1", label="Onglet un") nb.add("page2", label="Onglet deux") nb.add("page3", label="Onglet trois") nb.add("page4", label="C'est la fête") p1 = nb.subwidget_list["page1"] p2 = nb.subwidget_list["page2"] p3 = nb.subwidget_list["page3"] p4 = nb.subwidget_list["page4"] cv1 = Tk.Canvas(p1, bg="tan") cv2 = Tk.Canvas(p2, bg="white") cv3 = Tk.Canvas(p3, bg="yellow") fra4 = Tk.Frame(p4) lab1 = Tk.Label(fra4, text="Label un") lab2 = Tk.Label(fra4, text="Label deux") lab3 = Tk.Label(fra4, text="Label trois") lab4 = Tk.Label(fra4, text="Label quatre") lab1.grid(row=0, column=0) lab2.grid(row=0, column=1) lab3.grid(row=1, column=0) lab4.grid(row=1, column=1) nb.pack(fill=Tix.BOTH, expand=1, padx=5, pady=5) cv1.pack(expand=1, fill=Tix.BOTH) cv2.pack(expand=1, fill=Tix.BOTH) cv3.pack(expand=1, fill=Tix.BOTH) root.mainloop()
1) suis-je toujours obligé d'utiliser cette forme d'importation de Tix ? Qui m'oblige à toujours taper Tk.* devant l'instantiation d'un widget Tkinter, exemple : cv1 = Tk.Canvas(p1, bg="tan") . Ceci est assez embêtant, car quand je récupère d'autres bout de mes codes contenant du Tkinter, je suis obligé de rajouter ce petit suffixe embêtant...
2) Pourquoi mes 4 labels que je décide de mettre dans la Frame fra4 avec le GridManager Grid ne s'affichent-ils pas dans le 4ème onglet ?
Attention : ne me dites pas qu'on ne peut pas mélanger pack et grid dans une même application, car ceci n'est pas vrai (cf littérature "Tkinter programming" chez Manning)... C'est seulement au sein d'un même conteneur X qu'on doit rester dans le même GridManager pour placer tous les enfants directs de X...
Partager