Faire apparaitre/disparaitre un widget tkinter bouton [Résolu]

Signaler
Messages postés
7
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
31 mai 2014
-
Messages postés
7
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
31 mai 2014
-
Bonjour,

je cherche à faire apparaitre/disparaitre un bouton ('test') dans une fenêtre
tkinter à chaque clic sur un bouton activateur (X). Je ne comprends pas pourquoi
le script ci-dessous ne fonctionne pas (en fait le bouton apparait au premier
clic, disparait au second, mais ne réapparait pas par la suite).
Même s'il y a certainement moyen de procéder différemment, j'aimerais comprendre
pourquoi le script ci-dessous ne fait pas ce que j'attendais.
Dans l'attente de vos commentaires,
Cordialement,
Erdis


from tkinter import *
fen=Tk()
def activeb3():
global b3
try:
b3.destroy()
except:
b3=Button(text='test')
b3.pack()
b1=Button(text='X',command=activeb3)
b1.pack()
fen.mainloop()
A voir également:

3 réponses

Messages postés
103
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
26 mai 2020
59
Bonjour,

Pour info:
Rendre un bouton invisible:
Bouton.pack_forget()

Remettre un bouton visible:
Bouton.pack()

Rendre un bouton inactif:
Bouton.config(state = DISABLED)

Rendre un bouton actif:
Bouton.config(state = NORMAL)


--
Messages postés
69
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2018
6
Salut, le fait d'écrire 'b3.destroy()' supprime certes le bouton mais la variable 'b3' correspond toujours à l'id attribué par tkinter lors de la 1ère création du boutton. Donc on peut indéfiniment demander un 'destroy' sur l'id sans pour autant en voir le résultat.
Conclusion rajoute 'b3 = None' après le b3.destroy() pour forcer l'exception.

--
Messages postés
7
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
31 mai 2014

Merci pour vos explications. Elles confirment mon impression, à savoir que le bouton disparait mais existe toujours. Avec la méthode 'forget', cela fonctionne bien.

Je passe le sujet en résolu.

Cordialement,

Erdis