gpt4 book ai didi

python - 为什么使用 `frame.quit` 关闭 tkinter 子窗口会退出我的应用程序?

转载 作者:行者123 更新时间:2023-11-30 22:20:34 32 4
gpt4 key购买 nike

我有一个tkinter具有两个窗口的应用程序:A 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()

截图:

MainWindow ChildWindow

为什么frame.quit退出我的应用程序?如何在不退出的情况下关闭子窗口?

最佳答案

这是因为quit导致mainloop退出。由于没有事件循环运行,因此没有任何东西可以保持主窗口处于事件状态。

如果要关闭子窗口,请调用destroy方法。

self.close_button = tk.Button(..., command=self.top.destroy)

关于python - 为什么使用 `frame.quit` 关闭 tkinter 子窗口会退出我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48816671/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com