Twisted + Gtk - выключение не работает должным образом - PullRequest
1 голос
/ 30 ноября 2010

При использовании Python 2.6, Twisted 10.1 и GTK + 2.22, с установленным последним pygtk, у меня проблемы с выключением.Когда я закрываю свое приложение и выключаю реактор (конечно, используя gtk2reactor), приложение просто зависает.

Я осмотрел искаженный источник и добавил сообщения отладки.В итоге происходит событие 'shutdown', вызывается PortableGtkReactor.crash, что вызывает gtk.main_quit.Событие обрабатывается в конце ReactorBase.runUntilCurrent.Когда функция возвращается, управление переходит к ReactorBase.iterate, что возвращает управление к PortableGtkReactor.simulate, которое возвращается к ... вызову gtk.main().Похоже, что gtk просто не завершается.

К сожалению, когда я собрал очень простой пример с использованием twisted и примера gtk "Hello World", все отключилось правильно.Это должно быть то, что делает мое приложение.Пока я не смогу понять это дальше, хотя ...

Что может быть причиной этого?Как то, что приложение может сделать, что заставляет gtk не выходить?Приложение отлично работало на Gtk 2.12, с Python 2.5 и Twisted 8.1, если это поможет.

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Начиная с этот вопрос , похоже, возникает из-за импорта модуля win32ui.Но я думаю, что основная проблема кроется глубже

0 голосов
/ 30 ноября 2010

Темы, возможно? Twisted реактор объединяет все потоки при отключении, и если вы делаете что-то в callInThread, что зависает, ваш цикл может не остановиться. (Я не уверен, что будет, если вы начнете свои собственные потоки.)

...