我将新窗口(Tk.Toplevel)的打开绑定在按钮上。但是,如果我按两次按钮,则会打开两个窗口。我可以停用按钮直到新窗口关闭,或者如果按两次按钮则显示消息框吗?
如果您不想导入外部库。您可以简单地检查 root 是否包含任何Toplevelusing的实例isinstance()。
这是一个例子:
from tkinter import *
from tkinter import messagebox
def top():
if not any(isinstance(x, Toplevel) for x in root.winfo_children()):
top = Toplevel(root)
lbl = Label(top, text='TopLevel')
lbl.pack()
else:
messagebox.showinfo("showinfo", "Top level already exists")
root = Tk()
btn = Button(root, text='text', command=top)
btn.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
如果您只是想禁用该按钮。
from tkinter import *
from tkinter import messagebox
def top():
btn['state'] = 'disabled'
top = Toplevel(root)
lbl = Label(top, text='TopLevel')
lbl.pack()
top.protocol("WM_DELETE_WINDOW", lambda : btn.configure(state='normal') or top.destroy())
root = Tk()
btn = Button(root, text='text', command=top)
btn.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |