如何让Tkinter窗口跳到最前面?
我该怎么让Tkinter应用程序跳到最前面呢?现在这个窗口总是出现在其他所有窗口的后面,而且没有获得焦点。
有没有什么方法可以让我调用呢?
12 个回答
31
如果你是在Mac上操作,可以使用AppleEvents来让Python获得焦点。比如:
import os
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
49
在主循环之前添加以下几行代码:
root.lift()
root.attributes('-topmost',True)
root.after_idle(root.attributes,'-topmost',False)
对我来说,这个方法效果很好。它可以在窗口生成时把窗口显示在最前面,但不会一直让它保持在最前面。
118
假设你说的“我的其他窗口”是指你的应用程序窗口,你可以在一个 Toplevel 或 Tk 上使用 lift()
方法:
root.lift()
如果你想让这个窗口一直在所有其他窗口的上面,可以使用:
root.attributes("-topmost", True)
这里的 root
是你的 Toplevel 或 Tk。别忘了在 "topmost"
前面加个 -
!
如果你想让它是 临时的,可以在之后立即禁用 topmost:
def raise_above_all(window):
window.attributes('-topmost', 1)
window.attributes('-topmost', 0)
只需将你想要提升的窗口作为参数传入,这样就可以了。