python wnck在pdb.set_trace()之后才返回任何数据
在Ubuntu Linux/Gnome上,我试图使用python的wnck绑定来获取所有打开窗口的列表 我的代码如下所示:python wnck在pdb.set_trace()之后才返回任何数据,python,gnome,window-managers,wnck,Python,Gnome,Window Managers,Wnck,在Ubuntu Linux/Gnome上,我试图使用python的wnck绑定来获取所有打开窗口的列表 我的代码如下所示: #! /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()) **
#! /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())
** (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)>]
输出如下:
#! /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())
** (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)>]
**(windowlist.py:4501):警告**:试图将gtype“WnckWindowsState”注册为枚举,而实际上它是“GFlags”类型
**(windowlist.py:4501):警告**:试图将gtype“WnckWindowActions”注册为枚举,但实际上它是“GFlags”类型
**(windowlist.py:4501):警告**:试图将gtype“WnckWindowMoveResizeMask”注册为枚举,但实际上它是“GFlags”类型
[]
>/home/rory/personal/diriu/windowlist.py(12)()
->pprint(screen.get\u windows())
(Pdb)c
[,
,
,
,
,
,
,
,
,
,
,
]
第一个get\u windows()
调用返回一个空列表[]
。第二个get\u windows()
调用返回打开的窗口列表。在pdb
中,我只按c
继续,不执行任何操作(在pdb中)
如果我注释掉pdb
,则两个get\u windows()
调用都返回[]
。如果在pdb之前多次重复get_windows()
调用,则什么都没有。如果在pdb之后多次重复get_windows()
调用,我会不断得到完整的列表
为什么此呼叫仅在pdb为空后才起作用?如果没有pdb,我如何使其工作?我不使用wnck,但我认为在pdb情况下,两次调用之间的时间足以使窗口初始化到windows列表。在调用获取窗口之前,尝试延迟使用sleep。文件so-wnck.py(来自) python so-wnck.py
**(so-wnck.py:2367):警告**:试图将gtype“wnckWindowsState”注册为枚举,但实际上它是“GFlags”类型
**(so wnck.py:2367):警告**:试图将gtype“WnckWindowActions”注册为枚举,而实际上它是“GFlags”类型
**(so wnck.py:2367):警告**:试图将gtype“WnckWindowMoveResizeMask”注册为枚举,但实际上它是“GFlags”类型
[,
,
,
,
,
,
]
我使用了长达10秒的睡眠时间,没有任何变化。当前pdb系统在10秒内返回有效值。