Итак, я использую приложение Python / GTK, которое после отображения помощника скрывает окно помощника и запускает внешнее приложение. Проблема в том, что window.hide()
не работает, если после команды есть вызов приложения, использующий os.system()
или call()
. Когда вызов завершен, окно, кажется, зависает, и оно не исчезает, пока не будут выполнены все вызовы. Итак ... что можно сделать?
В своих приложениях я склонен заменять os.system()
и subprocess.call()
на subprocess.Popen
(см. https://stackoverflow.com/a/636570/2372604 ).
Через некоторое время, пытаясь найти возможные решения, я нашел этот простой ответ, который ждет GTK, пока он не выполнит все свои рабочие задачи. Вы можете подумать, что это замедляет работу приложения, но разница почти отсутствует.
Этот обходной путь может использоваться с любой версией Python. Он работает с PyGTK и с GTK + 3 (с GTK + 3, изменить gtk
на Gtk
...: P)
while gtk.events_pending():
gtk.main_iteration()
Просто добавьте это перед кодом, который вызывает проблему и готово! :)