0

Ubuntu クイック ツールで gtk アプリを作成しましたが、ウィンドウの閉じるボタン (ウィンドウの左上にあるボタン) でいくつかの問題が発生しました。メソッドにコードを記述し、ウィンドウにボタンを作成し、「クリックされた」信号をメソッドに接続します。すべてが正常に機能しています。今、ウィンドウを閉じるボタンに同じことをさせたいです。すぐに書かれたコードで、このメソッドを見つけました:

 def on_destroy(self, widget, data=None):
    # Clean up code for saving application state should be added here.
    Gtk.main_quit()

そのため、Gtk.main_quit() の代わりに、ウィンドウに配置したボタンのハンドラーを呼び出しました。現在、アプリはシステム トレイに隠れていますが、非表示に戻したいときにウィンドウがありませんが、表示されます私のアプリのプロセスは生きています。私が作成したボタンを使用すると、アプリを再表示するとアプリが表示されるので、システムの閉じるボタンを押すと複数の信号があることは明らかです。

だから私の質問は、システムボタンからウィンドウを閉じるときに呼び出される他のシグナルは何ですか?そして、他のシグナルのハンドラーをすばやく実装する場所はどこですか?

お時間をいただきありがとうございます。

4

1 に答える 1

1

あなたの窓は"destroy"です。その信号に接続すると、コードを実行できますが、ウィンドウはまだ破棄されています。でメイン ループから抜け出していない場合Gtk.main_quit()、アプリはまだ実行されています。ウィンドウを再表示するには、再作成する必要があります。

もう 1 つのオプションは、代わりにコールバック関数を"delete-event"ウィンドウの に接続することです。このシグナルハンドラーでは、戻っTrueた場合、ウィンドウは破棄されません。Trueつまり、ウィンドウを非表示にして戻ってきて、後でウィンドウを再表示することができます。このシグナル ハンドラから戻るFalseと、ウィンドウは引き続き破棄されます。

于 2012-07-04T19:51:04.527 に答える