Python将焦点设置为风

2024-09-29 19:21:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用pythonwnck将焦点设置为窗口。
我能找到的与这个库相关的文档只有来自https://developer.gnome.org/libwnck/stable/WnckWindow.html

使用我在SO的另一个问题上找到的一些代码,我可以使用窗口标题搜索窗口,但我不确定如何使窗口成为焦点。
从上述文件中,我发现了以下功能:

wnck_window_activate(WnckWindow *window, guint32 timestamp);


所以在python中,我尝试使用类似于窗口激活(0)”,但这似乎失败了,我的任务栏上的图标闪烁了一下,但它无法获得焦点。
在终端中,我收到消息:

^{pr2}$

所以我想我可能需要输入一个有效的时间戳,但不知道如何得到它。在

这是我目前使用的代码:

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)

Tags: 代码nameimportregtkgetwindowswindow
2条回答

要摆脱Wnck-WARNING,您需要使用w.activate()函数发送一个有效的时间戳。我发现这样做的方法是:

now = gtk.gdk.x11_get_server_time(gtk.gdk.get_default_root_window())

w.activate(now)

应该有一种更简单的方法来实现这一点,或者wnck应该允许时间戳{}来表示{},就像大多数gtk库使用的那样。在

解决方案其实很简单
我只需要“导入时间”,然后传递“int”(时间。时间激活()功能

工作代码:

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()))

相关问题 更多 >

    热门问题