私はpython gtk +とgladeを使ってアプリケーションを開発しています。私のgladeファイル形式はgtk-builderです。メインウィンドウとログインウィンドウの2つのウィンドウがあります。 __ init __()I を実行してログインダイアログウィンドウを開き、ユーザがOKシグナルをログインウィンドウから送信するまで、フォーカスがメインウィンドウに切り替わらないようにすることができます。これが次のコードを使用して実行されると、ユーザーはタイトルバーの[x]を2回クリックしてアプリケーションを終了する必要があります。 run()ではなくloginWindow.show()を使用すると、完璧に動作しますが、フォーカスの問題が発生します。この問題を解決するにはどうすればよいですか?ondestroyでコールバック関数が実行されない
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」のonClick()からメインウィンドウを実行していませんでした。両方のウィンドウが同時にポップアップしますが、ログインウィンドウはログインする前にフォーカスが当たっています。コードが完成しました。グレイドファイルも投稿する必要がありますか? ありがとう –