我正在尝试使用python-wnck将焦点设置到一个窗口。
我能找到的与这个库相关的文档都来自https://developer.gnome.org/libwnck/stable/WnckWindow.html
使用我在SO的另一个问题上找到的一些代码,我能够使用窗口标题搜索窗口,但我不确定如何让窗口聚焦。
从上面的文档中,我找到了这个函数:
wnck_window_activate(WnckWindow *window, guint32 timestamp);因此,在python中,我尝试使用"window.activate(0)“这样的函数,但这似乎失败了,我任务栏上的图标闪烁,但没有获得焦点。
在终端中,我收到以下消息:
(windowTest.py:17485): Wnck-WARNING: Received a timestamp of 0; window activation may not function properly所以我想我可能真的需要放入一个有效的时间戳,但不确定如何获得它。
这是我正在使用的代码:
import pygtk
pygtk.require('2.0')
import gtk
import wnck
import re
import sys
screen = wnck.screen_get_default()
while gtk.events_pending():
gtk.main_iteration()
titlePattern = re.compile('.*Geany.*')
windows = screen.get_windows()
for w in windows:
if titlePattern.match(w.get_name()):
print w.get_name()
w.activate(0)发布于 2013-07-22 05:53:08
解决方案实际上非常简单
我只需要“导入时间”,然后将"int(time.time())“传递给激活函数
工作代码:
import pygtk
pygtk.require('2.0')
import gtk
import wnck
import re
import sys
import time
screen = wnck.screen_get_default()
while gtk.events_pending():
gtk.main_iteration()
titlePattern = re.compile('.*Geany.*')
windows = screen.get_windows()
for w in windows:
if titlePattern.match(w.get_name()):
print w.get_name()
w.activate(int(time.time()))发布于 2015-01-29 11:23:30
要摆脱Wnck-WARNING,您需要使用w.activate()函数发送一个有效的时间戳。我发现这样做的方法是使用:
now = gtk.gdk.x11_get_server_time(gtk.gdk.get_default_root_window())
W.activate(现在)
确实应该有一种更简单的方法来做到这一点,或者wnck应该允许0的时间戳来表示now,就像大多数gtk库使用的那样。
https://stackoverflow.com/questions/17776978
复制相似问题