2015-05-16 3 views
0

Я пытаюсь создать простое приложение Python для Linux, и я использую GTK для создания пользовательского интерфейса. Я только начал изучать GTK, но из того, что я могу сказать, в тот момент, когда вы вызываете GTK.main(), программа переходит в эту функцию везде и только реагирует на пользовательские взаимодействия с пользовательским интерфейсом. Дело в том, что я запускаю контроллер SDN (POX), а также хочу, чтобы события, связанные с экземплярами POX-объектов, также могли запускаться (что в настоящее время не происходит, так как программа застревает в «GTK.main»() 'навсегда).Сохранять фоновые события при использовании GTK

Я рассмотрел возможность создания новой темы и вызова GTK.main() оттуда, но тогда мне придется беспокоиться о безопасности потоков. Не существует способа, в котором события как для пользовательского интерфейса, так и для объектов, созданных в остальной части программы, срабатывают рядом?

+0

I * think * вы хотите сохранить процесс GTK в основной теме. Как правило, при вводе цикла запуска для обработки действий пользователя это желаемое поведение. Похоже, что другой контроллер должен уведомить объект, который наблюдается в вашем цикле выполнения main(), с любыми действительными изменениями. – errata

+0

Итак, я породил еще один поток для контроллера и назвал 'GTK.main()' через основной поток, и он все еще кажется беспорядочным. Как-то вызов GTK.main() также заклинивает другой поток, потому что как только я закрываю окно пользовательского интерфейса, другой поток продолжает работать. Это все очень ново для меня. Я привык к .NET-программированию, где создание нереста нового потока значительно проще:/ – Ali250

+0

Подождите, вы вызываете 'GTK.main()' из обоих потоков? – andlabs

ответ

0

Я смог решить проблему, создав отдельные потоки как для GTK, так и для контроллера POX. С этим все работает одновременно.

Смежные вопросы