stackoverflow在这里回答了我之前关于我的Wiimote左/右点击问题的问题后,我不仅可以移动鼠标光标,现在我可以左/右点击。我现在还有一个问题。
我在python中使用什么来获取当前活动窗口的标题?谷歌搜索'X11 Python窗口标题','Linux Python窗口标题'和类似的东西,我发现所有是win32和tkinker(再次?),这不是我需要的。
如果你能提供帮助,那就太棒了!
答案 0 :(得分:12)
修改强>
最佳方式:
import gtk
import wnck
import glib
class WindowTitle(object):
def __init__(self):
self.title = None
glib.timeout_add(100, self.get_title)
def get_title(self):
try:
title = wnck.screen_get_default().get_active_window().get_name()
if self.title != title:
self.title = title
print title
except AttributeError:
pass
return True
WindowTitle()
gtk.main()
替代方式:
from subprocess import PIPE, Popen
import time
title = ''
root_check = ''
while True:
time.sleep(0.6)
root = Popen(['xprop', '-root'], stdout=PIPE)
if root.stdout != root_check:
root_check = root.stdout
for i in root.stdout:
if '_NET_ACTIVE_WINDOW(WINDOW):' in i:
id_ = i.split()[4]
id_w = Popen(['xprop', '-id', id_], stdout=PIPE)
for j in id_w.stdout:
if 'WM_ICON_NAME(STRING)' in j:
if title != j.split()[2]:
title = j.split()[2]
print "current window title: %s" % title
答案 1 :(得分:4)
killown的基于xprop的解决方案可以压缩成一个(虽然冗长)语句:
import subprocess
def GetActiveWindowTitle():
return subprocess.Popen(["xprop", "-id", subprocess.Popen(["xprop", "-root", "_NET_ACTIVE_WINDOW"], stdout=subprocess.PIPE).communicate()[0].strip().split()[-1], "WM_NAME"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0].strip().split('"', 1)[-1][:-1]
答案 2 :(得分:1)
使用ewmh
:
from ewmh import EWMH
wm = EWMH()
win = wm.getActiveWindow()
win_name = win.get_wm_name()
print(win_name)
答案 3 :(得分:0)
问题是找出哪个窗口处于活动状态或标题是什么? 获取窗口标题很简单:
MainWindow.title()
,其中MainWindow是窗口的名称。虽然不知道活动窗口。从来没有多个窗户。
答案 4 :(得分:0)
我认为如果你想处理Windows和Windows,python-wnck可能会很有用。工作空间&这样。我无法立即找到Python文档,但根据它包装的libwnck C库的文档,它有一个wnck_screen_get_active_window()方法。
答案 5 :(得分:0)
我的解决方案:
import wnck
disp=Display()
default_screen=wnck.screen_get_default()
default_screen.force_update()
active_window=disp.create_resource_object('window', default_screen.get_active_window().get_xid())
title=active_window.get_wm_name()
答案 6 :(得分:0)
我注意到wnck需要GTK事件循环来更新活动窗口。 Xlib没有这样的问题:
import Xlib
import Xlib.display
disp = Xlib.display.Display()
window = disp.get_input_focus().focus
# Get active window class and name
window.get_wm_class()
window.get_wm_name()