Окно Python GTK в теме - PullRequest
       3

Окно Python GTK в теме

2 голосов
/ 02 июня 2011

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

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

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

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

Это NotifyWindow (Thread) .destroy

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

Это NotifyWindow (Thread) .run

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 Ответ

1 голос
/ 06 июня 2011

использование gtk.threads_enter () и обход вашего основного вызова должно помочь.

Ознакомьтесь с часто задаваемыми вопросами PyGtk: PyGtk FAQ

...