为什么当主窗口最小化时顶层窗口会被破坏?

问题描述

from tkinter import *

root = Tk()
root.geometry("500x500")

toplevel = Toplevel()
toplevel.attributes("-toolwindow",1)

mainloop()

在这代码中,当我最小化主窗口并再次打开它时,顶层窗口消失了。

这是描述我的问题的图像(GIF):

enter image description here

有什么办法可以避免这种情况吗?

如果有人能帮助我就好了。

(操作系统: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

希望对大家有所帮助。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...