Как закрыть все окна Toplevel?

Есть программа и она сворачивается в трей. Встретился с проблемой - основное окно сворачивается в трей, а окна Toplevel остаются открыты. Можно ли их все одним махом закрыть?


Ответы (1 шт):

Автор решения: Victor VosMottor

Можно пройтись по всем дочерним виджетам, там будут и топлевелы, и попробовать каждый свернуть. Тот который сворачевается — топлевел, если ошибка — проигнорировать:

from tkinter import *
root = Tk()
...
def minimize_all():
    root.wm_state('iconic')
    for i in root.winfo_children():
        try:
            i.wm_state('iconic') # We suppose that `i` (each child of the root) is toplevel and try to minimize it...
        except:
            pass # But sometime it may be a button or a label or something so we can't and we just ignore such exceptions.

...
→ Ссылка