#python #gtk #pygtk #pygobject #wnck
#python #gtk #pygtk #pygobject #wnck
Вопрос:
Я только начал использовать 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 == []
.
Спасибо!
Комментарии:
1. Спасибо, ptomato! Как я могу сделать это сам?
Ответ №1:
Вам нужно вызвать, 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)>]
Комментарии:
1. Не могли бы вы, пожалуйста, поделиться ссылкой на доступный документ? Я не смог его найти
2. Упоминается в разделе примеров: developer.gnome.org/libwnck/stable/getting-started.html
3. Похоже, это не работает для новых окон, открытых с момента первого запуска скрипта. Есть ли что-то еще, что нужно сделать?
Ответ №2:
В вашем примере вы должны использовать: Gtk.main_iteration_do(False)
вместо Gtk.main_iteration()
.