如何让Tkinter窗口跳到最前面?

80 投票
12 回答
115924 浏览
提问于 2025-04-15 16:56

我该怎么让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)

只需将你想要提升的窗口作为参数传入,这样就可以了。

撰写回答