【发布时间】:2020-09-08 15:18:04
【问题描述】:
我有一个主 tkinter 窗口,它启动多个弹出窗口。我正在尝试通过按弹出窗口中的叉号或按退出来关闭所有窗口。我有以下代码,通过按退出或十字键仅关闭弹出窗口,但不关闭主窗口。如何重构代码以实现所需的输出。
import tkinter as tk
from tkinter import *
class myclass:
def __init__(self,master):
self.master = master
self.button = tk.Button(self.master, text = "Function", command = self.launchFunc)
self.button.place(width=160,height=50, x=20, y=20)
self.quit = tk.Button(self.master, text = "Quit", command = self.close_windows)
self.quit.place(width=160,height=50, x=20, y=80)
def close_windows(self):
self.master.destroy()
def launchFunc(self):
self.top = tk.Toplevel(self.master)
self.top.transient(self.master)
self.app = funcClass(self.top)
class funcClass:
def __init__(self, master):
self.master1 = master
self.quit = tk.Button(self.master1, text = "Quit", command = self.close_windows)
self.quit.place(width=160,height=50, x=20, y=20)
def close_windows(self):
self.a = myclass(self.master1)
self.a.close_windows()
if __name__ == "__main__":
root = tk.Tk()
myclass = myclass(root)
root.mainloop()
请指导我。谢谢
【问题讨论】:
-
为什么
funcClass.close_windows()会创建myclass的新实例?您已经拥有这样一个实例(在self.master1中),并且它具有正确的master值来关闭根窗口。
标签: python-3.x tkinter