3

PyGI(Ubuntu Natty上)を使い始めたばかりですが、これまでpygtkを使用したことはありません。私はwxPythonプログラムでwnckを使用しましたが、現在開いているウィンドウのリストを取得するのは簡単でした。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 == []。ありがとう!

4

2 に答える 2

6

ウィンドウのリストを返す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)>]
于 2011-05-23T12:38:54.390 に答える
1

あなたの例では、Gtk.main_iteration_do(False)の代わりに: を使用する必要がありGtk.main_iteration()ます。

于 2011-04-28T07:50:35.040 に答える