Как я могу получить список окон с помощью Wnck, используя PyGI? - PullRequest
2 голосов
/ 26 апреля 2011

Я только начал использовать PyGI (на Ubuntu Natty), хотя я никогда раньше не использовал pygtk.Я использовал wnck в программе wxPython, и было достаточно легко получить список открытых в данный момент окон.Из PyGI список окон всегда пуст.соответствующие биты кода:

from gi.repository import Gtk, Wnck

while Gtk.events_pending():
    Gtk.main_iteration()
#... in my app class...
    screen = Wnck.Screen.get_default()
    wins = screen.get_windows()

с этим, wins == [].Спасибо!

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

Вам нужно позвонить screen.force_update(), прежде чем screen.get_windows() вернет список окон. К сожалению, в документации нет этой части: (

In [1]: from gi.repository import Gtk, Wnck

In [2]: Gtk.main_iteration()
Out[2]: True

In [3]: screen = Wnck.Screen.get_default()

In [4]: screen.force_update()

In [5]: screen.get_windows()
Out[5]: 
[<Window object at 0x167bd20 (WnckWindow at 0x195d0e0)>,
 <Window object at 0x167bf00 (WnckWindow at 0x195d740)>,
 <Window object at 0x167bf50 (WnckWindow at 0x195d850)>]
0 голосов
/ 28 апреля 2011

В вашем примере вы должны использовать: Gtk.main_iteration_do(False) вместо Gtk.main_iteration().

...