8

スタックオーバーフローがWiiリモコンの左/右クリックの問題に関する以前の質問に答えた後、マウスカーソルを移動できるだけでなく、物事を左/右クリックできるようになりました。もう1つ質問があります。

現在アクティブなウィンドウのタイトルを取得するためにPythonで何を使用しますか?「X11PythonWindowTitle」、「Linux Python Window Title」などをグーグルで調べた後、私が見つけたのはwin32とtkinker(再び?)だけで、これは私が必要としているものではありません。

あなたが助けることができれば、それは素晴らしいでしょう!

4

7 に答える 7

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
于 2010-08-23T23:28:39.690 に答える
3

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]
于 2011-06-23T09:00:24.453 に答える
2

ewmh:

from ewmh import EWMH
wm = EWMH()
win = wm.getActiveWindow()
win_name = win.get_wm_name()
print(win_name)
于 2020-06-11T13:45:55.817 に答える
0

Windowsやワークスペースなどを処理したい場合は、python-wnckが役立つと思います。Pythonのドキュメントがすぐに見つかりませんが、ラップされているlibwnck Cライブラリのドキュメントによると、wnck_screen_get_active_window()メソッドがあります。

于 2010-08-23T23:32:44.917 に答える
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()
于 2013-03-12T06:23:46.353 に答える
-1

どのウィンドウがアクティブであるか、またはタイトルが何であるかを見つけるのに問題がありますか?ウィンドウのタイトルを取得するのは簡単です。

MainWindow.title()

、ここで、MainWindowはウィンドウの名前です。ただし、アクティブウィンドウについてはわかりません。複数のウィンドウがあったことはありません。

于 2010-08-23T23:26:52.360 に答える