我有一个带有两个窗口的tkinter
应用程序:启动时创建的MainWindow
和点击按钮后打开的ChildWindow
。
如果用户按下按钮,ChildWindow
应自行关闭。但是,当我尝试调用frame.quit
时,它会终止整个应用程序。
import tkinter as tk
class ChildWindow:
def __init__(self, master):
self.top = tk.Toplevel(master)
self.frame = tk.Frame(self.top)
self.frame.pack()
# BUG: Clicking "Close" will fully exit application
self.close_button = tk.Button(self.frame, text="Close", command=self.frame.quit)
self.close_button.pack()
class MainWindow:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.about_button = tk.Button(self.frame, text="Open child window", command=self._open_child_window)
self.about_button.pack()
self.frame.pack()
def _open_child_window(self):
self.about_window = ChildWindow(self.master)
root = tk.Tk()
lf = MainWindow(root)
root.mainloop()
截图:
为什么frame.quit
退出我的申请?如何在不退出的情况下关闭子窗口?
答案 0 :(得分:3)
这是因为delete
导致quit
退出。没有事件循环运行,没有任何东西可以使主窗口保持活动状态。
如果要关闭子窗口,请调用mainloop
方法。
destroy