tkinter fermer plusieurs fenêtres toplevel

Le
ylc
Bonjour,
Une nouvelle question après 1 an de silence.
J'ai ouvert un nombre variable de fenêtres Toplevel (qui ont toutes le
même nom) pour afficher des vignettes d'images. Je voudrais par un
bouton dans la fenêtre racine pouvoir fermer toutes les fenêtres
toplevel d'un coup, quel que soit leur nombre (et sans fermer la
fenêtre racine).
Or nomfenêtre.destroy ne ferme que la dernière fenêtre. Je vois bien
qu'il faut passer par le path.name de la fenêtre pour ce faire mais je
ne sais pas comment.
quelqu'un peut-il m'aider svp. ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Quentel
Le #17843491
On 14 nov, 16:46, ylc
Bonjour,
Une nouvelle question après 1 an de silence.
J'ai ouvert un nombre variable de fenêtres Toplevel (qui ont toutes le
même nom) pour afficher des vignettes d'images. Je voudrais par un
bouton dans la fenêtre racine pouvoir fermer toutes les fenêtres
toplevel d'un coup, quel que soit leur nombre (et sans fermer la
fenêtre racine).
Or nomfenêtre.destroy ne ferme que la dernière fenêtre. Je vois bie n
qu'il faut passer par le path.name de la fenêtre pour ce faire mais je
ne sais pas comment.
quelqu'un peut-il m'aider svp. ?



Bonjour,

Tu peux essayer ceci :

===========

from Tkinter import *

root = Tk()

def ouvre():
for i in range(5):
tpl = Toplevel(root)
Label(tpl,text="je suis la fenetre %s" %i).pack()

def ferme():
for widget in root.winfo_children():
if isinstance(widget,Toplevel):
widget.destroy()

Label(root,text="J'ouvre et je ferme des fenetres !").pack()
Button(root,text="Ouvrir 5 fenetres",command=ouvre).pack()
Button(root,text="Fermer tout !",commandþrme).pack()

root.mainloop()

======

winf_children() donne la liste des "enfants" d'un widget, ceux qui ont
été créés en passant ce widget comme premier argument. Il suffit de
trier ceux qui sont des instances de la classe Toplevel et de les
"destroyer"

A+
Pierre
ylc
Le #17848711
Bonjour Pierre,
Ca marche impeccablement !
Un grand merci pour ta réponse qui est simplissime et pourtant j'ai
passé plusieures heures à essayer diverses solutions sans succès.
Comme quoi on cherche toujours trop compliqué......
Je vais maintenant pouvoir uploader ma deuxième version du compacteur
Jpeg.
A+
Yves
Publicité
Poster une réponse
Anonyme