Bonjour bonjour,
Voilà plusieurs temps que je vous lis et que vous me rendez service. Cependant, aujourd'hui mon problème n'a pas trouvé de réponse lors de mes recherches.
Je m'explique :
J'aimerais créer un widget tel qu'on ait un bouton (nommons le bouton 1, et quand on clique sur le bouton, cela fasse apparaitre un label, un champ d'entrée, et un autre bouton ; et que ceux-ci disparaissent ensuite lorsque l'on clique a coté.
Jusqu'ici, j'ai à peu près réussi, mais quelque chose me turlupine : je n'arrive pas a centrer le bouton 1 au milieu de mon widget, et cela m'embête, esthétiquement parlant.
Pouvez-vous m'éclairer ?
Je laisse mon code ici :

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
 
class WidgetPersonnal(tk.Frame) :
    def __init__(self, master, name, channel, width = 300, height = 70) :
        super(WidgetPersonnal, self).__init__(width = width, height = height)
        self.Button_Name = tk.Button(self, text = name, command = self.command_detail)
        self.channel_name = tk.Label(self, text = channel)
        self.MPVar = tk.StringVar()
        self.MPEntry = tk.Entry(self, textvariable = self.MPVar)
        self.MPButton = tk.Button(self, text = "SEND")
        self.isVisible = False
 
    def grid(self, row = 0, rowspan = 1, column = 0, columnspan = 1) :
        super(WidgetPersonnal,self).grid(row = row, column = column, rowspan = rowspan, columnspan = columnspan)
        self.grid_propagate(0)
        self.Button_Name.grid(row =1, columnspan = 2, column = 0)
 
    def command_normal(self, evt) :
        mousex = evt.x_root ; mousey = evt.y_root
        debt_fenx = self.winfo_rootx() ; debt_feny = self.winfo_rooty()
        fen_width = self.winfo_width() ; fen_height = self.winfo_height()
        if not (mousex >= debt_fenx and mousex <= (debt_fenx +fen_width) and mousey >=debt_feny and mousey <=(debt_feny+fen_height)) :
            self.Button_Name.config(state = tk.NORMAL)
            self.isVisible = False
            self.unbind_all("<Button-1>")
            self.channel_name.grid_forget()
            self.MPButton.grid_forget()
            self.MPEntry.grid_forget()
            self.Button_Name.grid(row = 0, column = 1, rowspan = 2,columnspan = 3)
 
    def command_detail(self) :
        if not self.isVisible :
            self.Button_Name.config(state = tk.DISABLED)
            self.Button_Name.grid_forget()
            self.channel_name.grid(row = 0, rowspan = 1, column = 0, columnspan = 3)
            self.MPEntry.grid(row = 1, rowspan = 1, column = 0, columnspan = 2)
            self.MPButton.grid(row = 1, rowspan = 1, column = 2, columnspan = 1)
            self.isVisible = True
            self.bind_all("<Button-1>", self.command_normal)
Un grand merci d'avance