2012-04-25 3 views
1

Моя ОС - Ubuntu 11.10, я начал использовать Sublime Text 2 с терминала каждый раз, когда Я управлял им, это предупреждение Gdk будет показано на терминале, это очень раздражает. Как это исправить?Gdk-WARNING **: /build/....../gdkdrawable-x11.c:952 drawable не является pixmap или окном

$ 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

Вы не задавали никаких вопросов. – pzanoni

+0

Я добавил вопрос, thx. – khakistone

ответ

3

Чтобы исправить это, вы должны посмотреть исходный код приложения, исправить его и перекомпилировать. Gdk дает предупреждение, но, вероятно, потому, что приложение неправильно использует библиотеку.

К сожалению, это мало общего, чтобы увидеть эти ошибки на GTK + приложений ... Жаль, что некоторые разработчики не заботятся о фиксации их ...

Другим решением является запуск приложения перенаправлять это stdout и/или stderr в другом месте: subl . > /dev/null 2>&1 &

+0

Хорошо, это работает! – khakistone

2

Старый вопрос, который я знаю, но в случае, если кто-то еще ужален от этой ошибки. Это происходит потому, что программа использует gtk input methods api, которая, грубо говоря, позволяет вводить символы китайского и японского языков в входные виджеты. Api не прост в использовании, и в нем много подводных камней. См. http://lists.maemo.org/pipermail//maemo-developers/2006-January/002337.html

В этом случае программа, скорее всего, не вызывает gtk_im_context_set_client_window с реализованным окном gdk. Это требование правильно использовать api, но документация не так понятна. Затем вы получаете предупреждение выше каждого нажатия клавиши, но только только, если у вас есть действующий демон IBus. Большинство людей не используют это, потому что им не нужно вводить азиатских символов, чтобы они никогда не видели предупреждения.

1

Еще один ответ на очень старый вопрос, но я столкнулся с той же проблемой после обновления с wxpython 2.8 до wxpython 3.0.
Проблема, похоже, связана с gtk.gtk.Drawable(), которая, возможно, немного изменилась, как она обрабатывает идентификатор окна или как wxpython 3.0 имеет дело с запросом на идентификатор окна.
Чтобы получить доступ к окну 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 каким-либо другим способом.

+0

Ты спас мой день! Я портировал свое приложение из Windows, и внезапно выскочила ошибка, которую я никогда раньше не видел. Поскольку я отказался от использования GetHandle() в Linux, все работает отлично. – Dalen