Функция обратного вызова не выполняется с ondestroy - PullRequest
0 голосов
/ 09 сентября 2011

Я разрабатываю приложение, используя python gtk + и glade. Мой файл формата glade - gtk-builder. У меня есть два окна - одно главное окно и одно окно входа. Внутри __ init __ () я запускаю диалоговое окно входа в систему, так что я могу убедиться, что фокус не будет переключен на главное окно, пока пользователь не выдаст сигнал OK от входа окно. Когда это будет сделано с помощью следующего кода, пользователь должен дважды щелкнуть на [x] на строке заголовка, чтобы выйти из приложения. Когда я использую loginWindow.show (), а не run (), он отлично работает, но здесь возникает проблема фокуса. Как я могу исправить эту проблему?

import sys
try:
    import pygtk
    pygtk.require("2.8")
except:
    pass
try:
    import gtk
except:
    sys.exit(1)


class netChat:
    def __init__(self):
        self.builder = gtk.Builder()
        self.builder.add_from_file("netchat.glade")
        self.builder.connect_signals(self)
        self.loginWindow = self.builder.get_object('loginWindow')
        self.mainWindow = self.builder.get_object('mainWindow')
        self.message = self.builder.get_object('message')
        self.timeLine = self.builder.get_object('timeLine')
        self.loginWindow.run()
    def onSend(self, widget):
        text = self.message.get_text()
        myBuffer = self.timeLine.get_buffer()
        myBuffer.insert_at_cursor(' '+text+'\n')
        self.message.set_text('')
        print "on Send"
    def mainQuit(self, widget):
        print "Quiting, goodbye!"
        sys.exit(0)
    def loginQuit(self, widget):
        print "Login Quit, goodbye!"
        sys.exit(1)

if __name__ == "__main__":
    myChat = netChat()
    gtk.main()

Я попытался установить одинаковый обратный вызов mainQuit () для обоих окон. Но это не имело никакого значения. Спасибо за любую помощь.

1 Ответ

0 голосов
/ 09 сентября 2011

Похоже, у вас проблема с повторным входом. Вероятно, вы запускаете главное окно с помощью кнопки «ОК» в диалоговом окне входа.

Может быть, вы звоните gtk.main() несколько раз?

Сложно догадаться, поскольку ваш код не завершен.

...