我的操作系统是Ubuntu 11.10,我从终端启动Sublime Text 2,每当我操作它时,这个Gdk警告将显示在终端上,这非常烦人。如何解决?
$ subl . &
[1] 4294
$
(subl:4294): Gdk-WARNING **: /build/buildd/gtk+2.0-2.24.6/gdk/x11/gdkdrawable-x11.c:952 drawable is not a pixmap or window
(subl:4294): Gdk-WARNING **: /build/buildd/gtk+2.0-2.24.6/gdk/x11/gdkdrawable-x11.c:952 drawable is not a pixmap or window
(subl:4294): Gdk-WARNING **: /build/buildd/gtk+2.0-2.24.6/gdk/x11/gdkdrawable-x11.c:952 drawable is not a pixmap or window
答案 0 :(得分:3)
要解决此问题,您必须查看应用程序的源代码,修复它并重新编译它。 Gdk正在发出警告,但可能是因为应用程序误用了库。
不幸的是,在Gtk +应用程序上看到这些错误有点常见......太糟糕了一些开发人员不关心修复它们......
另一种解决方案是启动应用将其stdout
和/或stderr
重定向到其他地方:subl . > /dev/null 2>&1 &
答案 1 :(得分:2)
我知道这个老问题,但万一其他人被这个错误所困扰。之所以会发生这种情况,是因为该程序使用gtk的input methods api,粗略地说,它允许您将中文和日文字符输入到输入窗口小部件中。 api不容易使用,并且存在许多陷阱。见http://lists.maemo.org/pipermail//maemo-developers/2006-January/002337.html
在这种情况下,程序很可能不会使用已实现的gdk窗口调用gtk_im_context_set_client_window
。这是正确使用api的要求,但文档并不是那么清楚。然后,您在每个按键时都会收到上述警告,但如果您实际上正在运行IBus守护程序,则仅。大多数人没有任何用处,因为他们不需要输入亚洲字符,所以他们永远不会看到警告。
答案 2 :(得分:1)
对于一个非常古老的问题的另一个答案,但是在从wxpython 2.8升级到wxpython 3.0之后我遇到了同样的问题。
问题似乎源于gtk.gtk.Drawable(),它可能略微改变了它处理窗口标识的方式或者wxpython 3.0如何处理窗口Id的请求。
要访问曾经工作的窗口Id(在Linux上)GetHandle()
,它不再用,而是在上面的问题中得到错误。您现在必须使用GetId()
。
引用gtk
手册:
Attributes
"handle" Read The handle of the MS Windows window associated with the drawable. Not supported on X11.
"xid" Read The id of the X window available with the drawable. Not supported on MS Windows
我很欣赏这不是一个wxpython问题,但如果以其他方式使用gtk
,则适用相同的规则。