我会提出许多建议,这将使您的代码更好/更优雅。
首先,不要使用Tk() 窗口作为弹出窗口,使用
TopLevel()窗口,两个Tk()窗口不能传递信息
彼此之间,因此请改用TopLevel() 窗口。
def popupmsg(msg):
global MSGroot
MSGroot = TopLevel(root) # needs the main Tk() window as a master/parent element
lab1.config("test")
lab1= Label(MSGroot, font=('times', 40), bg='blue', fg="red")
lab1.grid(row=0, column=1)
MSGroot.title("TIME")
MSGroot.call('wm', 'attributes', '.', '-topmost', '1')
其次,您应该创建类以使您的Tk 和
TopLevel windows,这只是更好地格式化您的代码,而且更多
用于更改窗口的工作方式。
class PopUpMsg(Toplevel):
def __init__(self, master, msg):
super(PopUpMsg, self).__init__(master)
lab1 = Label(self, font=('times', 40), bg='blue', fg="red")
lab1.grid(row=0, column=1)
self.title("TIME")
self.call('wm', 'attributes', '.', '-topmost', '1')
# This is now the function you could use to show the popup
def popupmsg(msg):
test_popup = PopUpMsg(root, msg) # This is how you would create the PopUpMsg
test_popup.pack()
root = Tk()
root.mainloop()
最后做到这一点,当你按“s”时窗口会关闭
我会再次为这个新的PopUpMsg 类创建一个on_close 方法,
并将“s”绑定到它。
class PopUpMsg(Toplevel):
def __init__(self, master):
super(PopUpMsg, self).__init__(master)
lab1 = Label(self, font=('times', 40), bg='blue', fg="red")
lab1.grid(row=0, column=1)
self.title("TIME")
self.bind('<s>', self.on_close)
def on_close(self):
self.destroy()