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