Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tkinter fermer plusieurs fenêtres toplevel

2 réponses
Avatar
ylc
Bonjour,
Une nouvelle question apr=E8s 1 an de silence.
J'ai ouvert un nombre variable de fen=EAtres Toplevel (qui ont toutes le
m=EAme nom) pour afficher des vignettes d'images. Je voudrais par un
bouton dans la fen=EAtre racine pouvoir fermer toutes les fen=EAtres
toplevel d'un coup, quel que soit leur nombre (et sans fermer la
fen=EAtre racine).
Or nomfen=EAtre.destroy ne ferme que la derni=E8re fen=EAtre. Je vois bien
qu'il faut passer par le path.name de la fen=EAtre pour ce faire mais je
ne sais pas comment.
quelqu'un peut-il m'aider svp. ?

2 réponses

Avatar
Pierre Quentel
On 14 nov, 16:46, ylc wrote:
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 !",commandrme).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
Avatar
ylc
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