我正在使用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()回调。但这没有任何区别。谢谢你的帮助。
答案 0 :(得分:0)
看起来你有再入问题。您可能正在登录对话框中的“确定”按钮的onClick上运行主窗口。
也许您多次致电gtk.main()
?
很难猜测,因为您的代码不完整。