Форум сайта python.su
Извиняюсь перед почтенной публикой за “говнокод”.
Убрал
def active(self): self.tl.mainloop()
# -*- coding: utf-8 -*- import tkinter as tk class Win: num = 0 def __init__(self, root, perent, func) -> None: self.root = root self.parent = perent self.func = func Win.num += 1 self.num = Win.num self.tl = tk.Toplevel() self.tl.geometry("600x400") self.fr = tk.Frame(self.tl) self.fr.pack() self.bt = tk.Button(self.fr, text='Добавить окно', command = self.parent.start) self.bt.pack() self.bt = tk.Button(self.fr, text='Закрыть последнее открытое окно', command=self.exit1) self.bt.pack() tk.Label(self.tl, text=str(Win.num)).pack() def exit1(self): self.func() def __del__(self): print('__del__', self.num) class Wroot: ltp = [] def __init__(self, root): self.root = root self.root.geometry("800x600+10+10") self.fr = tk.Frame(self.root) self.fr.pack() self.bt = tk.Button(self.fr, text='Добавить окно', command = self.start) self.bt.pack() self.bt1 = tk.Button(self.fr, text='Закрыть последнее открытое окно', command = self.win_del) self.bt1.pack() def start(self): Wroot.ltp.append(Win(self.root, self, self.win_del)) def win_del(self): if len(Wroot.ltp) > 0: Wroot.ltp[-1].tl.destroy() del Wroot.ltp[-1] if __name__ == '__main__': root = tk.Tk() Wroot(root) root.mainloop()
Офлайн