我可以使用以下代码获得我认为的Nautilus桌面窗口:
screen = wnck.screen_get_default()
while gtk.events_pending():
gtk.main_iteration()
for window in screen.get_windows():
if window.get_name() == 'x-nautilus-desktop':
xid = window.get_xid()
wrapped_window = gtk.gdk.window_foreign_new(xid)
但是当我尝试执行wrapped_window.add()时,我得到了Window对象没有add方法的错误。
我知道这可以做到,因为有人已经在http://www.youtube.com/watch?v=NOlIfhXQX9g上有一个演示效果的YouTube视频,但我无法弄清楚如何获取背景窗口并在其上放置一个小部件。
任何人都知道怎么做?
答案 0 :(得分:0)
您正在混淆gtk.Window
和gtk.gdk.Window
。他们不一样。前者是一个顶级桌面窗口,可用作GTK小部件的容器;后者是屏幕区域的抽象,可以在屏幕上绘制,而不是容器。
使用libwnck无法获取应用程序的GTK小部件。如何实现您想要的效果我不知道,但我认为您需要更多地考虑扩展窗口管理器,因为这是管理桌面的。