あまり評判が良くないので。元の質問はstackoverflowに投稿されており、ここにリンクがあります:
Pythonユニティインジケーターアプレットと空き地の子ウィンドウ
pythonとgladeでユニティインジケーターアプレットを作成しました。インジケーターアプレットをクリックしたときに表示されるスクリーンショットです。設定メニューが表示されます。この設定メニューをクリックすると、新しい窓。
Indicator Applet Menu
Preference Window
ここで問題は、閉じるボタンをクリックすると、アプリケーション全体が存在することです。
設定ウィンドウをトリガーするコードは次のとおりです。
def action_preferences(self, widget):
'''
Show the preferences window
'''
base = PreferenceWindow()
base.main()
self.menu_setup()
preference.pyのコードは次のとおりです。
import sys import json import pynotify try: import pygtk pygtk.require( " 2.0 ") exception: pass try: import gtk import gtk.glade except: print( "GTK is not Available") sys.exit(1) class PreferenceWindow: ui = None configs = { } 通知=なし ウィンドウ=なし def __init __(self): pynotify.init( " nepal-loadshedding "): sys.exit(1) self.ui = gtk.glade.XML(" pref_ui.glade ") #以前に保存した設定を取得します self.configs = self.parse_configs() saved_group_value = str(self.configs.get( "GROUP")) self.ui.get_widget( "text_group_number")。set_text(saved_group_value) dic = { "on_btn_pref_ok_clicked":se lf.on_save_preference、 "on_btn_pref_close_clicked":self.on_close、 "on_preference_window_destroy":self.on_quit、 } self.ui signal_autoconnect(dic) self.windowがNoneの場合: self.window = self.main() def parse_configs(self) : self.configs = json.load(open( "config.txt")) return self.configs def save_configs(self、key、value ): self.configs [key] = int(value) json.dump(self.configs、open( "config.txt"、 "wb")) return True def on_save_preference(self、widget): group_number = self.ui.get_widget( "text_group_number")。get_text() self.save_configs( " GROUP "、group_number) #アイコンの概要ケース if self.notify == None: self.notify = pynotify.Notificati on( "Nepal Loadshedding"、 "グループが正常に保存されました:" + group_number) else: self.notify.update( "Nepal Loadshedding"、 "グループが正常に保存されました:" + group_number) self.notify.set_timeout(100) self.notify.show() 印刷 "正常に保存されました" def on_close(self、widget): print 'close event called' def on_quit(self、widget): sys.exit(0) def main(self): gtk.main()
"on_preference_window_destroy":self.on_quit、
この行はあなたの問題です。ウィンドウが破棄されると、quitメソッドが呼び出されます。ウィンドウを閉じると、ウィンドウが破棄されるため、quitメソッドが呼び出されます。
また、GTK +アプリケーションを終了するためにsys.exit(0)
を呼び出さないでください。代わりにGtk.main_quit()
を使用します。また、アプリケーションを古い、廃止されたpygtk
バインディングを使用するのではなく、GTK +および関連ライブラリのgobject-introspection
バインディングを使用するように変換することをお勧めします。