首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python wnck在pdb.set_trace()之后才返回任何数据

python wnck在pdb.set_trace()之后才返回任何数据
EN

Stack Overflow用户
提问于 2011-03-18 20:33:26
回答 2查看 772关注 0票数 4

在Ubuntu Linux / Gnome上,我尝试使用python的wnck绑定来获取所有打开的窗口的列表。

我的代码如下所示:

代码语言:javascript
复制
#! /usr/bin/python

from pprint import pprint
import wnck

screen = wnck.screen_get_default()

pprint(screen.get_windows())

import pdb ; pdb.set_trace()

pprint(screen.get_windows())

输出如下所示:

代码语言:javascript
复制
** (windowlist.py:4501): WARNING **: Trying to register gtype 'WnckWindowState' as enum when in fact it is of type 'GFlags'

** (windowlist.py:4501): WARNING **: Trying to register gtype 'WnckWindowActions' as enum when in fact it is of type 'GFlags'

** (windowlist.py:4501): WARNING **: Trying to register gtype 'WnckWindowMoveResizeMask' as enum when in fact it is of type 'GFlags'
[]
> /home/rory/personal/diriu/windowlist.py(12)<module>()
-> pprint(screen.get_windows())
(Pdb) c
[<wnck.Window object at 0xb61db0cc (WnckWindow at 0x992c000)>,
 <wnck.Window object at 0xb61db0f4 (WnckWindow at 0x992c0a8)>,
 <wnck.Window object at 0xb61db11c (WnckWindow at 0x992c150)>,
 <wnck.Window object at 0xb61db144 (WnckWindow at 0x992c1f8)>,
 <wnck.Window object at 0xb61db16c (WnckWindow at 0x992c2a0)>,
 <wnck.Window object at 0xb61db194 (WnckWindow at 0x992c348)>,
 <wnck.Window object at 0xb61db1bc (WnckWindow at 0x992c3f0)>,
 <wnck.Window object at 0xb61db1e4 (WnckWindow at 0x992c498)>,
 <wnck.Window object at 0xb61db20c (WnckWindow at 0x992c540)>,
 <wnck.Window object at 0xb61db234 (WnckWindow at 0x992c5e8)>,
 <wnck.Window object at 0xb61db25c (WnckWindow at 0x992c690)>,
 <wnck.Window object at 0xb61db284 (WnckWindow at 0x992c738)>]

第一个get_windows()调用返回[],一个空列表。第二个get_windows()调用返回一个打开的窗口列表。在pdb中,我只按c继续,什么也不做(在pdb中)。

如果我注释掉pdb,两个get_windows()调用都会返回[]。如果我在pdb之前多次重复get_windows()调用,则什么也没有。如果我在pdb之后多次重复get_windows()调用,我会不断得到一个完整的列表。

为什么此调用仅在空pdb之后才起作用?如何在没有pdb的情况下使其工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-20 04:08:47

文件so-wnck.py (来自How might I grab all windows with a certain word in their titles?)

代码语言:javascript
复制
import pygtk
pygtk.require('2.0')
import gtk
import wnck

screen = wnck.screen_get_default()
while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
print (windows)

python so-wnck.py

代码语言:javascript
复制
** (so-wnck.py:2367): WARNING **: Trying to register gtype 'WnckWindowState' as enum when in fact it is of type 'GFlags'

** (so-wnck.py:2367): WARNING **: Trying to register gtype 'WnckWindowActions' as enum when in fact it is of type 'GFlags'

** (so-wnck.py:2367): WARNING **: Trying to register gtype 'WnckWindowMoveResizeMask' as enum when in fact it is of type 'GFlags'
[<wnck.Window object at 0xb7566694 (WnckWindow at 0x97c51f8)>,
 <wnck.Window object at 0xb75666bc (WnckWindow at 0x97c52a0)>, 
 <wnck.Window object at 0xb75666e4 (WnckWindow at 0x97c5348)>, 
 <wnck.Window object at 0xb756670c (WnckWindow at 0x97c53f0)>, 
 <wnck.Window object at 0xb7566734 (WnckWindow at 0x97c5498)>,
 <wnck.Window object at 0xb756675c (WnckWindow at 0x97c5540)>, 
 <wnck.Window object at 0xb7566784 (WnckWindow at 0x97c55e8)>]
票数 1
EN

Stack Overflow用户

发布于 2011-03-18 21:22:24

我不使用wnck,但我认为在pdb的情况下,两次调用get_window之间的时间足以初始化窗口列表。在调用get_window之前,尝试使用带有一些延迟的睡眠。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5352027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档