如何使用 PyGI 通过 Wnck 获取窗口列表?

发布于 2024-11-03 04:56:43 字数 377 浏览 4 评论 0原文

我刚刚开始使用 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 == []。 谢谢!

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 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()

with that, wins == [].
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

善良天后 2024-11-10 04:56:43

您需要调用 screen.force_update()< /code>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)>]

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)>]
寻梦旅人 2024-11-10 04:56:43

在您的示例中,您必须使用:Gtk.main_iteration_do(False) 而不是 Gtk.main_iteration()

In your example you have to use: Gtk.main_iteration_do(False) instead of Gtk.main_iteration().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文