Кто-нибудь сталкивался с этим?
Я взял образец GTK HelloWorld . Работает нормально. Однако, если я import win32ui
, то он не отключается должным образом (как объяснено в этот вопрос ).
Есть и другие проблемы. В процессе сужения моего приложения, чтобы увидеть, что заставило его не закрываться, я столкнулся с моментом, когда я деконструировал класс логгера, с которым я написал, что у меня не было проблем. В конструкторе у меня была строка:
self.logger = logger
Я прокомментировал остальную часть класса, поэтому self.logger
даже не использовался. Если бы я оставил строку как есть, я получил бы эту ошибку, нажав кнопку «Hello World»:
c:\python26\lib\site-packages\twisted\internet\gtk2reactor.py:350: GtkWarning: gtk_widget_destroy: assertion `GTK_IS_WIDGET (widget)' failed
gtk.main()
Если я изменю строку на:
self.logger = 0
тогда ошибка не будет отображаться. Это произошло и с различными другими строками кода в классе logger. Я подозреваю, что это случится и с другими случайными битами кода. Но в любом случае - установка переменной, которая даже не используется , должна не вызывать какие-либо проблемы. Обратите внимание, что в этот момент я все еще использовал twisted с pygtk. Я еще не воспроизвел это только с помощью gtk.
Это заставляет меня подозревать, что pygtk действительно нестабилен ... Кто-нибудь сталкивался с этим раньше? Что я могу сделать? Причина, по которой я обновился с gtk 2.12
, заключалась в том, что мое приложение зависало случайным образом, но это намного хуже.
ОБНОВЛЕНИЕ: ошибки происходят в 64-битной Windows 7. Я пробовал как с 32-битным python с версиями, перечисленными выше, так и с 64-битным python с pygtk-2.17.1, pygobject-2.21.2, pycairo -1.8.8 и pywin32-214.
Пока ошибка win32ui
не возникает при той же установке на виртуальной машине Windows XP VirtualBox.