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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager