I just started using PyGI (on Ubuntu Natty), although I have never used pygtk before. I have used wnck in a wxPython program though, and it was easy enough to get a list of currently opened windows. From PyGI, the window list is always empty. relevant code bits:
from g开发者_运维技巧i.repository import Gtk, Wnck
while Gtk.events_pending():
Gtk.main_iteration()
#... in my app class...
screen = Wnck.Screen.get_default()
wins = screen.get_windows()
with that, wins == []
.
Thanks!
You need to call screen.force_update()
before screen.get_windows()
returns list of windows. Unfortunately docs are lacking this part :(
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)>]
In your example you have to use: Gtk.main_iteration_do(False)
instead of Gtk.main_iteration()
.
精彩评论