Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未使用ondestroy执行回调函数_Python_Gtk_Glade - Fatal编程技术网

Python 未使用ondestroy执行回调函数

Python 未使用ondestroy执行回调函数,python,gtk,glade,Python,Gtk,Glade,我正在使用PythonGTK+和glade开发一个应用程序。我的glade文件格式是gtk builder。我有两个窗口-一个主窗口和一个登录窗口。在_; init _;内,我运行登录对话框窗口,以便确保在用户从登录窗口发出OK信号之前,焦点不会切换到主窗口。使用以下代码完成此操作后,用户必须单击标题栏上的[x]两次,才能退出应用程序。当我使用loginWindow.show而不是run时,它工作得非常完美,但是焦点问题就出现了。如何解决此问题 import sys try: impor

我正在使用PythonGTK+和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回调。但那没什么区别。谢谢你的帮助。

看来你有再入问题。您可能正在通过单击登录对话框中的ok按钮来运行主窗口

也许你给gtk.main打了好几次电话


这很难猜测,因为您的代码不完整。

不,我没有在单击“登录确定”后运行主窗口。这两个窗口同时弹出,但登录窗口在登录前只有焦点。代码已经完成了,我也应该发布glade文件吗?谢谢