Почему после закрытия скрипт висит в процессах?

Рейтинг: 2Ответов: 3Опубликовано: 09.03.2015

Только начал изучать PyGTK. Сразу, дабы в будущем облегчить себе жизнь, я пишу свои классы и функции по изученным материалам.

Такой вопрос: после закрытия скрипт висит в процессах. Как это исправить? Сразу скажу, что данный класс планируется использовать для программы, у которой нет интерфейса (она висит в трее), а необходимость, посредством информационных окон, доносить результаты работы к пользователю остается. Поправьте, пожалуйста, если я где-то допустил ошибку.

import gtk

# Константы кнопок.
YES = gtk.BUTTONS_OK
YES_NO = gtk.BUTTONS_YES_NO
YES_CANCEL = gtk.BUTTONS_OK_CANCEL
CLOSE = gtk.BUTTONS_CLOSE

# Константы окон.
INFO = gtk.MESSAGE_INFO
QUERY = gtk.MESSAGE_QUESTION
WARNING = gtk.MESSAGE_WARNING
ERROR = gtk.MESSAGE_ERROR

class PyGtkDialog(gtk.Window):

    def __init__(self):
        super(PyGtkDialog, self).__init__()

    def __show(self, widget, title, text, buttons, par):
        window = gtk.MessageDialog(self, gtk.DIALOG_MODAL, par, buttons, text)
        window.set_title(title)
        response = window.run()
        result = None

        if response == gtk.RESPONSE_YES or response == gtk.RESPONSE_OK:
            result = "yes"
        elif response == gtk.RESPONSE_CANCEL:
            result = "cancel"
        elif response == gtk.RESPONSE_CLOSE:
            result = "close"
        elif response == gtk.RESPONSE_NO:
            result = "no"

        window.destroy()
        return result

    def show(self, title="Title", text="Text", buttons=CLOSE, par=INFO):
        result = self.__show(self, title, text, buttons, par)
        gtk.main()
        return result

if __name__ == "__main__":
    gtk_dialog = PyGtkDialog()
    result = gtk_dialog.show("Заголовок", "Текст", YES_CANCEL, WARNING)
    print result

Ответы

Ответов пока нет.