我用 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有以下代码:
导入系统
导入json
导入 pynotify
尝试:
导入 pygtk
pygtk.require("2.0")
除了:
经过
尝试:
导入gtk
导入 gtk.glade
除了:
print("GTK 不可用")
系统退出(1)
类偏好窗口:
ui = 无
配置 = {}
通知 = 无
窗口 = 无
def __init__(self):
如果不是 pynotify.init ("nepal-loadshedding"):
系统退出 (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)
迪克 = {
“on_btn_pref_ok_clicked”:self.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 为无:
self.window = self.main()
def parse_configs(self):
self.configs = json.load(open("config.txt"))
返回 self.configs
def save_configs(self, key, value):
self.configs[key] = int(value)
json.dump(self.configs,打开(“config.txt”,“wb”))
返回真
def on_save_preference(自我,小部件):
group_number = self.ui.get_widget("text_group_number").get_text()
self.save_configs("GROUP", group_number)
# 试试 icon-summary 的情况
如果 self.notify == 无:
self.notify = pynotify.Notification ("Nepal Loadshedding", "组成功保存到:" + group_number)
别的:
self.notify.update("尼泊尔减载", "组成功保存到:" + group_number)
self.notify.set_timeout(100)
self.notify.show()
print "保存成功"
def on_close(自我,小部件):
print '关闭事件调用'
def on_quit(自我,小部件):
系统退出(0)
定义主要(自我):
gtk.main()