在 Python(和 OS X)中将焦点设置到 Tkinter 窗口
Posted
技术标签:
【中文标题】在 Python(和 OS X)中将焦点设置到 Tkinter 窗口【英文标题】:set focus to Tkinter window in Python (and OS X) 【发布时间】:2014-06-20 00:58:11 【问题描述】:考虑以下 MWE:
from Tkinter import *
root = Tk()
Label(root,text="foo").pack()
root.mainloop()
我想设置一个新创建的Tkinter
窗口,该窗口不包含任何“可聚焦”控件,例如前台按钮。如果我(从 shell)运行上面的代码,窗口将处于非活动状态,因此无法对键绑定做出反应。
有没有办法让这样一个窗口出现在前台?
[编辑] 我正在使用 Python 2.7.5 和 OS X Mavericks。我从终端窗口运行代码,即使正确创建了 Tkinter 窗口,焦点仍停留在该窗口。
【问题讨论】:
你检查过那个帖子吗? ***.com/questions/3842220/… @mlwn 是的,它对我不起作用 【参考方案1】:刚刚在 IDLE 上尝试过:
>>> from Tkinter import *
>>> root=Tk()
>>> root.focus_force()
>>> Label(root,text="foo").pack()
>>> root.mainloop()
工作就像一个魅力!(编辑:显然在 Windows 上!)
编辑:This is a standard behavior
【讨论】:
无论是否使用 root.focus_force(),对我来说都一样 & 是新窗口的焦点吗?因为我的情况并非如此 窗口同时使用到前台,最大的问题是它太小了。我认为这是一个特定于平台的问题。 小不是问题,它是由 OP 设计的。问题是它没有得到焦点 这两种方法都让我关注,所以我说它可能是特定于平台的。【参考方案2】:也许你做错了什么,因为下面对我来说非常适合: 可能是平台问题??
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()
【讨论】:
从命令行执行时对我不起作用(python 2.7.5,OS X Mavericks)。焦点停留在终端窗口,不切换到窗口。 猜猜看,你的第一个例子对我有用......我什至不需要调用 root.wm_attributes 和 root.focus_force......我正在使用 LinuxMint,并从终端调用它...... .我猜是关于平台的......我对苹果不熟悉:(((( @muffel:也许你可以试着在里面放一些按钮,然后把它隐藏起来。希望它能抓住焦点?? (作为一种解决方法)以上是关于在 Python(和 OS X)中将焦点设置到 Tkinter 窗口的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用fancybox打开的新页面中将焦点设置在文本框上
在Mac OS X 10.6上的Python中,无法在Matplotlib中将字体更改为Helvetica