要使tkinter按钮只打开一个Toplevel窗口,可以使用一个全局变量来控制窗口的打开状态。以下是一个示例代码:
import tkinter as tk
def open_toplevel():
global toplevel_opened
if not toplevel_opened:
toplevel_opened = True
toplevel = tk.Toplevel(root)
toplevel.protocol("WM_DELETE_WINDOW", on_toplevel_close)
def on_toplevel_close():
global toplevel_opened
toplevel_opened = False
toplevel.destroy()
root = tk.Tk()
toplevel_opened = False
button = tk.Button(root, text="Open Toplevel", command=open_toplevel)
button.pack()
root.mainloop()
在上述代码中,我们使用了一个名为toplevel_opened
的全局变量来表示Toplevel窗口的打开状态。初始状态下,该变量为False,表示Toplevel窗口未打开。当按钮被点击时,会调用open_toplevel
函数。该函数会检查toplevel_opened
的值,如果为False,则创建一个Toplevel窗口,并将toplevel_opened
设置为True。同时,我们还为Toplevel窗口设置了一个关闭事件的处理函数on_toplevel_close
,在关闭Toplevel窗口时将toplevel_opened
设置为False。这样,当Toplevel窗口被关闭后,再次点击按钮时才能打开新的Toplevel窗口。
请注意,这只是一个示例代码,实际应用中可能需要根据具体需求进行适当的修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云