command只需要函数名-不需要()和参数。
使用wButton = Button(self, text='text', command = self.OnButtonClick)
如果使用command = self.OnButtonClick(),则运行self.OnButtonClick(),结果将分配给command。如果您想动态地为command创建函数,它可能非常有用。
要使子窗口始终位于父窗口的顶部,可以使用child.transient(parent)
在你的代码中应该是top.transient(self)def OnButtonClick(self):
top = Toplevel()
top.title("title")
top.geometry("300x150+30+30")
top.transient(self)
topButton = Button(top, text="CLOSE", command = self.destroy)
topButton.pack()
您可以使用.config(state='disabled')和.config(state='normal')禁用/启用按钮。
您可以在OnButtonClick()中禁用主窗口按钮,但您需要新函数在子窗口关闭之前/之后启用该按钮。from Tkinter import *
class Window(Tk):
def __init__(self, parent):
Tk.__init__(self, parent)
self.parent = parent
self.initialize()
def initialize(self):
self.geometry("600x400+30+30")
self.wButton = Button(self, text='text', command = self.OnButtonClick)
self.wButton.pack()
def OnButtonClick(self):
self.top = Toplevel()
self.top.title("title")
self.top.geometry("300x150+30+30")
self.top.transient(self)
self.wButton.config(state='disabled')
self.topButton = Button(self.top, text="CLOSE", command = self.OnChildClose)
self.topButton.pack()
def OnChildClose(self):
self.wButton.config(state='normal')
self.top.destroy()
if __name__ == "__main__":
window = Window(None)
window.title("title")
window.mainloop()