这是我的解决方案,但我认为这不是一个好的解决方案。任何人都可以建议我新的解决方案,我想通过使用python的核心库,而不是wnck或pygtk来获取标题属性以进行比较......
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
答案 0 :(得分: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
中使用参考。例如,您可以检查属性,最大化它,最小化以及窗口管理器可以执行的所有典型操作。
注意:对于较新版本的wnck
(&gt; = 3.0),您必须使用PyGObject(GObject Introspection),但您明白了。