在GTK + / Python中设置应用程序菜单名称(修复“未知应用程序名称”)

时间:2014-04-10 04:14:45

标签: python ubuntu menu gtk

在Ubuntu 12.04下运行GTK +应用程序时,如何设置应用程序级菜单中显示的应用程序名称?

以下是一个示例应用:

from gi.repository import GLib, Gtk, Gio
import sys


class MyApp(object):
    def __init__(self):
        GLib.set_application_name('My App')
        self.app = Gtk.Application.new('org.example.test', 0)
        self.app.connect('startup', self.on_app_startup)
        self.app.connect('activate', self.on_app_activate)
        self.app.connect('shutdown', self.on_app_shutdown)

    def run(self, argv):
        self.app.run(argv)

    def on_app_startup(self, app):
        self.window = Gtk.ApplicationWindow.new(app)
        self.window.set_default_size(640, 480)
        self.window.set_title('AppMenu Demo')

        app.add_window(self.window)

        # # App menu
        app_menu = Gio.Menu()

        section = Gio.Menu()
        item = Gio.MenuItem.new('Quit', 'app.quit')
        item.set_attribute_value("accel", GLib.Variant("s", "<Control>Q"))
        section.append_item(item)

        app_menu.append_section(None, section)

        app.set_app_menu(app_menu)

        # # Menu bar
        menu_bar = Gio.Menu()

        submenu = Gio.Menu()

        section = Gio.Menu()
        section.append_item(Gio.MenuItem.new('Help', 'app.help'))

        submenu.append_section(None, section)

        menu_bar.append_submenu('Help', submenu)

        app.set_menubar(menu_bar)

        action = Gio.SimpleAction.new('quit', None)
        action.connect('activate', self.on_quit)
        app.add_action(action)

    def on_app_activate(self, app):
        self.window.show_all()

    def on_app_shutdown(self, app):
        pass

    def on_quit(self, action, data=None):
        self.app.quit()


if __name__ == '__main__':
    app = MyApp()
    app.run(sys.argv)

如果你在Ubuntu 12.04下运行这个代码,它会弹出一个标有&#34; AppMenu Demo&#34 ;;的窗口。屏幕顶部的控制栏也显示此名称。如果将鼠标移动到控制栏,则会显示两个下拉菜单;应用程序菜单和&#34;帮助&#34;菜单。

这很好 - 除了应用程序菜单的名称是&#34;未知的应用程序名称&#34;。我无法找到改变这个名字的方法。 GLib.set_application_name(name)没有做到。如何设置应用程序名称?

或者:这是一个GTK +领先于Ubuntu支持的情况吗?谷歌搜索&#34;未知的应用程序名称&#34;指向一系列错误报告和合并补丁,这表明这可能是当前开发的一个领域,而不是稳定的API。对Ubuntu中安装的应用程序的快速调查显示,大多数应用程序都有一个&#34;文件&#34;菜单,但没有什么可以被识别为&#34; app&#34; GTK +似乎支持的类型的菜单。我是否应该放弃应用程序菜单,直到它们在操作系统级别得到更好的支持?

1 个答案:

答案 0 :(得分:0)

这是一个ubuntu特定/统一特定/古代gtk+ 3.4.x / gtk+ 3.6.x错误。

有些当前(gtk+ 3.10.7Cinnamon 2.014作为DE)它的工作正常。

screenshot