如果已存在,则禁用另一个TopLevel

时间:2015-07-27 15:37:03

标签: python-3.x tkinter toplevel

我的应用中有TopLevel的说明窗口。现在它看起来像:

def instructions(self):     
    window = Toplevel(takefocus = True)
    window.geometry("200x200")
    window.resizable(0, 0)
    Label(window, text = "WIP").grid()

所以它是主类的一部分,我定义了一个命令,当用户按下顶部菜单中的按钮或按F3我定义的快捷方式时调用。 我需要的是当那个窗口出现在那里时我希望它能够集中注意力而不是开启一个新窗口。

它可能看起来像:

if window == exists:
    window.takefocus
else:
     do the upper and create it ....

在破坏时也需要知道它已经被破坏了,否则我只能打开它一次

1 个答案:

答案 0 :(得分:1)

这似乎有效:

def instructions(self):        
    if self.window == None:
        self.window = Toplevel(takefocus = True)
        self.window.focus()
        self.window.geometry("200x200")
        self.window.resizable(0, 0)
        Label(self.window, text = "WIP").grid()
        self.window.protocol("WM_DELETE_WINDOW", self.windowclosed)
    else:
        self.window.focus()       
def windowclosed(self):
    self.window.destroy()
    self.window = None