Я разрабатываю приложение, используя 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 () для обоих окон. Но это не имело никакого значения. Спасибо за любую помощь.