Est-il possible d'ouvrir et de fermer une fenêtre (la même) avec le même bouton ?
Je me pose la question puisqu'il n'est possible d'utiliser qu'une seule 'command' par bouton n'est-ce pas ?
Cordialement,
Unic0
Est-il possible d'ouvrir et de fermer une fenêtre (la même) avec le même bouton ?
Je me pose la question puisqu'il n'est possible d'utiliser qu'une seule 'command' par bouton n'est-ce pas ?
Cordialement,
Unic0
Salut,
La "command" réfère à une fonction et la fonction fait le nécessaire.
exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 mon_bouton = TrucButton('text', command=on_mon_bouton_click) def on_mon_bouton_click(): si ma condition est vraie: fait ceci sinon: fait cela else: ignore
Je comprends bien cela mon code est comme tel :
Et je souhaiterais pouvoir cliquer une fois sur mon bouton Butt_Nex pour faire apparaitre la fenetre puis recliquer dessus pour la faire disparaitre mais je vois pas trop comment faire ? (même au sein de la fonction Frm_Rq)
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 Fn_P = Tk() def Frm_Rq(): Frame_Rq = Frame(Fn_P, bg='#9fd6c2', width=200) Frame_Rq.pack(side=TOP, pady=5, fill=BOTH) Button_Rq_Fermer = Button( Frame_Rq, image=Ico_Up, relief=GROOVE, command=Frame_Rq.destroy) Button_Rq_Fermer.place(x=0, y=0) Label_Rq = Label(Frame_Rq, text="Requête", bg='#9fd6c2') Label_Rq.pack(side=LEFT) Rq = Text(Frame_Rq, heigh=5, width=45) Rq.pack(side=LEFT) Frame_Rq_Butt = Frame(Frame_Rq, bg='#9fd6c2') Frame_Rq_Butt.pack(side=BOTTOM, padx=5) Button_Rq_Valid = Button(Frame_Rq_Butt, image=Ico_Check2, bg='#9fd6c2', relief=GROOVE, command=Fn_P.destroy) Button_Rq_Valid.pack(side=LEFT) Button_Rq_Erase = Button(Frame_Rq_Butt, image=Ico_Cross2, bg='#9fd6c2', relief=GROOVE, command=Fn_P.destroy) Button_Rq_Erase.pack(side=LEFT) Button_Rq_Rec = Button(Frame_Rq_Butt, image=Ico_Save2, bg='#9fd6c2', relief=GROOVE, command=Fn_P.destroy) Button_Rq_Rec.pack(side=LEFT) Butt_Nex = Button(Frame_Ico, image=Ico_Nex, command=Frm_Rq) Butt_Nex.grid(row=0, column=0)
Cordialement,
Salut,
Pourquoi ne pas modifier la commande associée au bouton?
- W
Je comprends parfaitement l'idée, le problème que j'ai c'est comment faire ! J'ai pensé faire entrer un paramètre :
Ca ne marche pas pour autant (avec la bonne indentation
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 def Frm_Rq(on): if on==0: Frame_Rq = Frame(Fn_P, bg='#9fd6c2', width=200) Frame_Rq.pack(side=TOP, pady=5, fill=BOTH) Button_Rq_Fermer = Button( Frame_Rq, image=Ico_Up, relief=GROOVE, command=Frame_Rq.destroy) Button_Rq_Fermer.place(x=0, y=0) Label_Rq = Label(Frame_Rq, text="Requête", bg='#9fd6c2') Label_Rq.pack(side=LEFT) Rq = Text(Frame_Rq, heigh=5, width=45) Rq.pack(side=LEFT) Frame_Rq_Butt = Frame(Frame_Rq, bg='#9fd6c2') Frame_Rq_Butt.pack(side=BOTTOM, padx=5) Button_Rq_Valid = Button( Frame_Rq_Butt, image=Ico_Check2, bg='#9fd6c2', relief=GROOVE, command=Fn_P.destroy) Button_Rq_Valid.pack(side=LEFT) Button_Rq_Erase = Button( Frame_Rq_Butt, image=Ico_Cross2, bg='#9fd6c2', relief=GROOVE, command=Fn_P.destroy) Button_Rq_Erase.pack(side=LEFT) Button_Rq_Rec = Button( Frame_Rq_Butt, image=Ico_Save2, bg='#9fd6c2', relief=GROOVE, command=Fn_P.destroy) Button_Rq_Rec.pack(side=LEFT) else : Frame_Rq.destroy)
C'est plus une question de logique je pense et de pratique :/
Et quelque chose dans ce genre:
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 def show_hide_frame(): global Frame_Rq if Frame_Rq: destroy Frame_Rq = False else create def Frm_Rq(): global Frame_Rq Frame_Rq = Frame(Fn_P, bg='#9fd6c2', width=200) ... Frame_Rq = False Butt_Nex = Button(Frame_Ico, image=Ico_Nex, command=show_hide_frame)
Salut,
Il y a plein de façons pour faire çà.
Mais c'est un "détail" que vous pouvez mettre d'abord au point en dehors de votre code.
Un exemple:
Dans ce cas, on se contente de regarder si "frame" est affichée ou pas sans détruire, re-créer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 import tkinter as tk def toggle(): if frame.grid_info(): frame.grid_forget() else: frame.grid(row=1, column=0) frame = tk.Frame(height=100, width=100, bg='blue') frame.grid(row=1, column=0) tk.Button(text='next', command=toggle).grid(row=0, column=0) tk.mainloop()
- W
Merci beaucoup pour ces clarifications je vais essayer d'en faire une fonction générique utilisable pour tous mes boutons.
Merci encore,
Cordialement,
Unic0
Partager