如何解决如何检测子窗口在 tkinter
我正在使用 tkinter 在 Python 中进行一些基本的 GUI 编程。我有一个主窗口,它有两个按钮。这些按钮中的每一个都会打开一个特定的子窗口,但问题是每次单击其中一个按钮时都会生成新窗口。我想检查子窗口是否已经打开并防止在单击按钮时多次打开同一个窗口。如何检查子窗口是打开还是关闭?
我阅读了有关 stackoverflow 的文档和一些帖子,但找不到相关的解决方案。
我的代码简介:
# First Window
def open_first_win():
first_win = Toplevel(root)
first_win.title("First Window")
# Second Window
def open_second_win():
second_win = Toplevel(root)
second_win.title("Second Window")
# Main Window
root = Tk()
root.title("Main Window")
root.geometry('300x100')
btn1 = Button(root,text="Btn1",command=open_first_win)
btn1.pack()
btn2 = Button(root,text="Btn2",command=open_second_win)
btn2.pack()
root.mainloop()
解决方法
您可以创建一个窗口是否关闭的引用,然后继续,例如:
opened = False # Create a flag
# First Window
def open_first_win():
global opened
if not opened:
first_win = Toplevel(root)
first_win.title("First Window")
opened = True # Now it is open
first_win.protocol('WM_DELETE_WINDOW',lambda: onclose(first_win)) # If it is closed then set it to False
def onclose(win): # Func to be called when window is closing,passing the window name
global opened
opened = False # Set it to close
win.destroy() # Destroy the window
# Second Window
def open_second_win():
global opened
if not opened:
second_win = Toplevel(root)
second_win.title("Second Window")
opened = True
second_win.protocol('WM_DELETE_WINDOW',lambda: onclose(second_win))
顾名思义,protocol
只是为窗口添加了一些规则,例如 WM_DELETE_WINDOW
表示尝试关闭窗口时调用的函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。