我正在寻找创建子窗口的最有效方法,并禁止所有访问主窗口,以便用户必须单击子窗口内的“确定”按钮才能恢复访问权限到主窗口。
这是我的代码,使用Toplevel类。它有效,但是否有更有效的方法?
int
答案 0 :(得分:3)
在grab_set
对象上调用Toplevel
就足够了,完成后,您可以将其销毁,然后在grab_set
上致电self
(但我不是100%肯定,即使下面得到的程序证实了它)。
事实上,如果你在Tk
根窗口上创建了一个按钮,并且如果你与这个按钮相关联,例如一个打印东西的lambda函数,那么在“设置抓取”之后不会打印任何内容。儿童之窗。
请参阅以下示例,其中基本上所有事件都被重定向到Toplevel
窗口,而不是Tk
根窗口:
from tkinter import *
class MainWindow(Tk):
def __init__(self):
Tk.__init__(self)
Entry(self).pack(side="left")
Button(self, text="whoami", command=lambda : print("A Tk root window.")).pack(side="left")
def CreateChildWindow(self):
subWindow = Toplevel(self)
def quit_subwindow():
subWindow.destroy()
self.grab_set()
Button(subWindow, text="whoami", command=lambda : print("A Toplevel child window.")).pack()
Button(subWindow, text='Exit', command=quit_subwindow).pack()
subWindow.grab_set()
win = MainWindow()
win.CreateChildWindow()
win.mainloop()
查看effbot.org上的以下文章,了解有关如何创建对话框的更多信息: