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

Messages postés
7
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
31 mai 2014
- - Dernière réponse : Erdis
Messages postés
7
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
31 mai 2014
- 9 avril 2014 à 20:35
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()
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
97
Date d'inscription
lundi 9 octobre 2006
Statut
Membre
Dernière intervention
7 décembre 2018
38
14
Merci
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)


--

Dire « Merci » 14

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lespinx
Messages postés
70
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
1 juin 2018
9
1
Merci
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.

--
Commenter la réponse de Mints
Messages postés
7
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
31 mai 2014
0
Merci
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
Commenter la réponse de Erdis