在stackoverflow回答了我之前關於我的Wiimote左/右鍵問題的問題之後,我不僅可以移動鼠標光標,現在我可以左鍵/右鍵單擊事物。我現在還有一個問題。Xorg,Python和當前窗口標題
我在Python中使用什麼來獲取當前活動窗口的標題?在搜索'X11 Python窗口標題','Linux Python窗口標題'和類似的東西之後,我發現的所有內容都是win32和tkinker(再次?),這不是我所需要的。
如果你能幫上忙,那太棒了!
在stackoverflow回答了我之前關於我的Wiimote左/右鍵問題的問題之後,我不僅可以移動鼠標光標,現在我可以左鍵/右鍵單擊事物。我現在還有一個問題。Xorg,Python和當前窗口標題
我在Python中使用什麼來獲取當前活動窗口的標題?在搜索'X11 Python窗口標題','Linux Python窗口標題'和類似的東西之後,我發現的所有內容都是win32和tkinker(再次?),這不是我所需要的。
如果你能幫上忙,那太棒了!
編輯
最好的辦法:
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
問題是找出哪個窗口處於活動狀態或標題是什麼? 獲得一個窗口的標題很簡單:
MainWindow.title()
,其中主窗口是窗口的名稱。不知道活動窗口,但。從來沒有多個窗口。
我需要活動窗口的名稱,一個在前景 – dbdii407 2010-08-23 23:59:01
我覺得如果你要處理的Windows &工作區&這樣的python-wnck可能是有用的。我無法立即找到Python文檔,但根據它包裝的libwnck C庫的文檔,它有一個wnck_screen_get_active_window()方法。
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]
我的解決辦法:
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()
這隻給我它正在運行的窗口的標題。 :( – dbdii407 2010-08-24 00:12:26
只是放了一個time.sleep並更改爲其他窗口,你會得到當前窗口的標題,這會得到當前窗口的標題,而不僅僅是它正在運行的窗口 – killown 2010-08-24 00:42:21
其實,我確實設置了一個時間。睡覺(3),它仍然是相同的標題 – dbdii407 2010-08-24 00:50:00