问题描述
from tkinter import *
root = Tk()
root.geometry("500x500")
toplevel = Toplevel()
toplevel.attributes("-toolwindow",1)
mainloop()
在这段代码中,当我最小化主窗口并再次打开它时,顶层窗口消失了。
这是描述我的问题的图像(GIF):
有什么办法可以避免这种情况吗?
如果有人能帮助我就好了。
(操作系统:Windows 10, Python版本:3.9.1, Tkinter 版本:8.6)
解决方法
toolwindow 属性是专门设计用来在根窗口隐藏时使窗口隐藏的。如果您不希望出现这种行为,请不要设置该属性。
,在acw1668的帮助下,我自己找到了答案。
顶层窗口不消失;相反,它只是在所有窗户后面。
我找到了恢复它的方法:
from tkinter import *
root = Tk()
root.geometry("500x500")
def bring_window_back(e):
toplevel.attributes('-topmost',1)
toplevel.attributes('-topmost',0)
toplevel = Toplevel(root)
toplevel.attributes("-toolwindow",1)
root.bind("<Map>",bring_window_back)
mainloop()
注意:<Map>
绑定可能无法在 linux 上正常工作。如果您正在为此寻找解决方案,请参阅:Binding callbacks to minimize and maximize events in Toplevel windows
希望对大家有所帮助。