3

これが私の解決策ですが、それは良いものではないと思います。誰かが私に新しい解決策を提案できますか?私はウィンドウを列挙し、 Title プロパティを取得して、 wnck や pygtk ではなく python のコアライブラリを使用して比較したい...

def linux_CountWindowsByTitle(title):
    import commands
    XWinInfoOutput = commands.getoutput("xwininfo -all -root")
    resArray = XWinInfoOutput.split("\n")
    resRange = len(resArray) - 1
    res = 0
    #Parse each line of output
    for i in range(0, resRange):
        index = resArray[i].find("\"")   #Get index of Double quote
        if (index < 0):
            continue    #This line does not have title we need

        tmp = resArray[i].split("\": (")[0] #Remove tail
        windowName = tmp.split("\"",1)[1]   #Remove head
        if (UTILITY.Compare(title, windowName)):
            #LIBRARY.Report(windowName)
            res += 1

    return res
4

1 に答える 1

2

モジュールを使用できますwnck

import wnck

screen = wnck.screen_get_default()
window_list = wnck.Screen.get_windows(screen)

window_names = [ w.get_name() for w in window_list ]

同様のウィンドウをカウントするために、辞書を作成できます。

count = window_names.count
wcounts = { item: item.count(item) for item in set(window_names) }

ディクショナリのキーはウィンドウ タイトルで、値は同じ名前が繰り返される回数です。

少し異なりますが、使用すると面白いと思われるものは次のとおりです。

wdict = { w.get_name(): w for w in window_list }
wdict.has_key(title)

後で他の処理を行うためにウィンドウが必要になった場合でも、wdict. たとえば、プロパティのチェック、最大化、最小化、およびウィンドウ マネージャーが実行するすべての一般的な操作を行うことができます。

:(> = 3.0)の新しいバージョンでは、wnckPyGObject(GObject Introspection)を使用する必要がありますが、アイデアは得られます。

于 2012-10-17T03:32:23.857 に答える