创建禁用主窗口访问权限的子窗口的有效方法?

时间:2015-08-27 21:12:09

标签: python tkinter window tk

我正在寻找创建子窗口的最有效方法,并禁止所有访问主窗口,以便用户必须单击子窗口内的“确定”按钮才能恢复访问权限到主窗口。

这是我的代码,使用Toplevel类。它有效,但是否有更有效的方法

int

1 个答案:

答案 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上的以下文章,了解有关如何创建对话框的更多信息:

  

http://effbot.org/tkinterbook/tkinter-dialog-windows.htm