在How to make a Tkinter window jump to the front?
中提出的问题之后的问题我想在前面有一个顶层窗口(我用它来导航我的另一个主窗口)。 但是我希望它只在我的tkinter程序的各个窗口的前面。
chwin.wm_attributes("-topmost",True)
解决方案强制将此窗口置于桌面上的每个窗口之上(至少在这里:Linux fedora13)。
你知道其他任何解决方案吗?
答案 0 :(得分:3)
最后,lift()方法调用效果不佳。当我使用它并覆盖窗口时我希望保持在顶部,此调用只是让窗口的图标在任务栏中突出显示(当您在非可见窗口中执行某些操作时会发生这种情况),但是窗口没有解除。
Linux故障?我不知道
我终于找到了一种方法:只需从必须保持最佳状态的窗口调用wm_transient:
secondarywindow.wm_transient(root)
这样, secondarywindow 始终位于 root 之上,但它可以被我在桌面上使用的任何其他程序遮挡
答案 1 :(得分:1)
每次创建新窗口后,您都可以抬起所需的窗口:
import Tkinter as tk
root = tk.Tk()
tk.Label(root, text="I'm the root").grid()
main = tk.Toplevel(root)
tk.Label(main, text="I'm the one you want").grid()
def bring_to_front():
"""This function was made to demonstrate"""
tk.Toplevel(root)
# Each time a new window is created, lift the one you want above it.
main.lift()
root.after(5000, bring_to_front)
root.after(1, bring_to_front)
root.mainloop()
注意无论制作多少Toplevels,您想要的窗口始终保持焦点(位于顶部)。然而,它不会提升到其他应用程序之上(只有脚本生成的窗口)。
您甚至可以使用iconify
Toplevel
方法来最小化您现在不需要的每个窗口。
请注意,我在Python 2.7中使用它。如果您没有/使用Python,只需将此脚本中给出的原则应用于其他地方。