当前位置: 首页 > 知识库问答 >
问题:

Python unity指示器小程序和glade子窗口

白祺然
2023-03-14

我用python和Glade创建了一个unity指示器小程序。下面是点击指示器小程序时出现的截图。您可以看到首选项菜单。单击此首选项菜单时,将打开一个新窗口。

现在的问题是当我点击关闭按钮时,整个应用程序就存在了。

触发首选项窗口的代码如下所示:

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")
except:
    pass
try:
    import gtk
    import gtk.glade
except:
    print("GTK is not Available")
    sys.exit(1)

class PreferenceWindow:
    ui = None
    configs = {}
    notify = None
    window = None

    def __init__(self):

        if not pynotify.init ("nepal-loadshedding"):
            sys.exit (1)

        self.ui = gtk.glade.XML("pref_ui.glade")

        # Get the preference saved previously
        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":self.on_save_preference,
            "on_btn_pref_close_clicked":self.on_close,
            "on_preference_window_destroy":self.on_quit,
            }

        self.ui.signal_autoconnect(dic)

        if self.window is 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)

        # try the icon-summary case
        if self.notify == None:
            self.notify = pynotify.Notification ("Nepal Loadshedding", "Group saved successfully to : " + group_number)
        else:
            self.notify.update("Nepal Loadshedding", "Group saved successfully to : " + group_number)
            self.notify.set_timeout(100)

        self.notify.show()
        print "Saved successfully"

    def on_close(self, widget):
        print 'close event called'

    def on_quit(self, widget):
        sys.exit(0)

    def main(self):
        gtk.main()

共有1个答案

巫化
2023-03-14

您不能调用 ,因为这将使整个应用程序终止(如您所见)。您要做的是调用 。当您单击关闭按钮时,您可以破坏窗口。

def on_close(self, widget):
    self.ui.get_widget("<window-name>").destroy()

def on_quit(self, widget):
    gtk.main_quit()

此外,您还调用了两次 (一次在 的底部,第二次在实例化之后,使用 。您必须删除其中一个,否则您的应用程序将卡在第二个上。

 类似资料:
  • Glade 是 RAD (快速应用开发)工具,用于创建基于 GTK 工具包和 GNOME 桌面。 其界面是类似于 GIMP ,可以进行定制,甚至嵌入到 Anjuta。Glade 包括一些接口模块,如文本框,对话框标签,数字输入,复选框,菜单,使界面的开发更快。界面设计存储为XML 格式,从而使这些设计可以方便地与外部接口结合。安装 Glade 也很简单。例如,在 Fedora 中,您可以敲入命令

  • 我刚开始使用JFace/SWT进行GUI编程。在我使用普通SWT窗口(http://help.eclipse.org/indigo/index.jsp?topic=%2forg.eclipse.wb.ercp.doc.user%2fhtml%2fwizards%2fercp%2fapplication_window.html)之前,我第一次尝试了JFace应用程序窗口。 现在我要设置这个窗口的最小

  • 问题内容: 我只是从Java小程序开始,然后发现了这个提供教程的网站。我输入了所有代码,但该小程序未显示在我的浏览器中:HelloWorld.java 这是我的HTML文件 我已经编译了Java文件(HelloWorld.class),并将所有文件保存在桌面上。我在Mac OS X美洲狮上使用的是野生动物园的最新版本。我在谷歌浏览器中尝试过,并说要安装一个插件,但是我没有做任何事情? 问题答案:

  • Glade To Code 是根据 Glade 文件生成指定语言的 GTK 代码的工具 使用说明 python3 glade-to-code.py -l [语言类型] -i [输入 Glade 文件路径] -o [输出源代码文件路径] 提示 如果 Glade 文件中 GTK 组件的 ID 为空, 则不会生成对应的代码。 参数说明 -l, --lang= 语言类型,可选项:

  • 每次我启动Android模拟器在Android Studio模拟器需要整个监视器。我可以以某种方式要求Android Studio规模模拟器窗口50%? 如何做到这一点?

  • 本文向大家介绍微信小程序修改swiper默认指示器样式的实例代码,包括了微信小程序修改swiper默认指示器样式的实例代码的使用技巧和注意事项,需要的朋友参考一下 修改官方swiper样式 从微信官方微信开发文档中心复制swiper 代码块。 wxml定义 wxss定义样式 赋值 效果图: 总结 以上所述是小编给大家介绍的微信小程序修改swiper默认指示器样式的实例代码,希望对大家有所帮助,如果