在Python(和OS X)中将焦点设置到Tkinter窗口

2 投票
2 回答
6037 浏览
提问于 2025-04-18 05:14

考虑以下这个简单的例子:

from Tkinter import *
root = Tk()
Label(root,text="foo").pack()
root.mainloop()

我想让一个新创建的 Tkinter 窗口出现在最前面,这个窗口里没有任何可以“聚焦”的控件,比如按钮。如果我在命令行中运行上面的代码,这个窗口就会变得不活跃,因此无法响应键盘的操作。

有没有办法把这样的窗口放到最前面呢?

[编辑] 我使用的是 Python 2.7.5 和 OS X Mavericks。我是从终端窗口运行代码的,尽管 Tkinter 窗口创建得很好,但焦点还是停留在那个终端窗口上。

2 个回答

0

也许你做错了什么,因为下面的代码对我来说运行得很好:可能是平台的问题吧?

from Tkinter import *
root = Tk()
Label(root,text="foo").pack()

root.geometry("%dx%d+%d+%d" % (200,100,0,0))
#made it a bigger window to see better...
root.wm_attributes("-topmost", 1)
root.focus_force()

root.mainloop()
5

我刚在IDLE上试了一下:

>>> from Tkinter import *
>>> root=Tk()
>>> root.focus_force()
>>> Label(root,text="foo").pack()
>>> root.mainloop()

效果非常好!(编辑:显然是在Windows上!)

编辑:这是一个标准的行为

撰写回答