Окно GTK Python в потоке

#python #pygtk

#python #pygtk

Вопрос:

У меня есть приложение CLI, которое копает некоторые данные, в случае необходимости запускает поток, который создает окно GTK с некоторой информацией. Однако CLI (основной поток) по-прежнему анализирует данные в фоновом режиме, поэтому может быть создано множество окон. В случае, если я закрываю окно, на самом деле запускается событие уничтожения, я получаю строку отладки в CLI, но окно блокируется.

Какая-то волшебная команда, которую я должен использовать?

Я создаю подобное окно в основном потоке:

     gtk.gdk.threads_init()
    notifyWindow = NotifyWindow()
    notifyWindow.start()
  

Это NotifyWindow (поток).уничтожить

 def destroy(self, widget, data=None):
    print "destroy signal occurred"
    gtk.main_quit()
  

Это NotifyWindow (поток).выполнить

 def run(self):

    self.window = gtk.glade.XML( "hadinfo.glade" )

    self.window_main = self.window.get_widget("window_main")

    if (self.window_main):
        self.window_main.connect("destroy", self.destroy)
        self.window_main.connect("delete_event", self.delete_event)

    self.button_cancel = self.window.get_widget("button_cancel")
    self.button_cancel.connect("clicked", self.destroy)

    self.window.get_widget("window_main").show()

    gtk.main()
  

Ответ №1:

использование gtk.threads_enter() и leave вокруг вашего основного вызова должно помочь.

Взгляните на часто задаваемые вопросы PyGTK: ЧАСТО задаваемые вопросы PyGTK

Комментарии:

1. Ссылка разорвана.