Bonjour/bonsoir,
Je fais actuellement façe à un problème : j'aimerais créer des widget (dérivés de Frame) dont le contenu à été "placé" (ie placé avec widget.place()), et par la suite pour "packer" ou "grider" ces widgets crées... seulement voilà, pack ou grid ne semblant pas reconnaitre la présence d'objet "placés", lorseque je pack la Frame contenant les widget "placés", mon objet frame possède une taille de 0x0 (ou 1x1), ce qui est franchement moyen moyen.
Connaitriez-vous la façon de procéder pour que cette façon de faire fonctionne ?
voici un exemple simplifié :
Dans ce code, si je remplace test.pack() par test.place(x=0, y=0, relwidth=1, relheight=1), cela fonctionne, mais comme dit plus haut, j'aimerais pourvoir packer et non placer...
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 import Tkinter as tk class MyEntry(tk.Frame): def __init__(s, master, width=100, height=25): tk.Frame.__init__(s,master) s._create_widgets() s._place_widgets(width,height) def _create_widgets(s): s.frame = tk.Frame(s, bd=2, relief=tk.SUNKEN) s.entry = tk.Entry(s.frame, relief=tk.FLAT) s.button = tk.Button(s.frame, text='Test') def _place_widgets(s, width, height): s.entry.place(relx=0, relheight=1, x=2, y=2, width=width-height-2, height=-4, bordermode=tk.OUTSIDE) s.button.place(relx=1, relheight=1, x=-2, y=2, width=height-2, height=-4, anchor=tk.NE, bordermode=tk.OUTSIDE) s.frame.place(x=0,y=0, width=width, height=height, bordermode=tk.OUTSIDE) root = tk.Tk() test = MyEntry(root) test.pack() root.mainloop()
Partager