我正在尝试显示Gio.Menuitem的快捷键加速器
正如您所看到的, RandomAlbum 菜单项没有显示加速器 - 但是,我添加了添加加速器并将其连接到Gio.MenuItem成功,因为menuitem响应键盘快捷方式 Alt + Z
我正在使用的代码片段如下:
action = Gio.SimpleAction.new(action_name, None)
app = Gio.Application.get_default()
app.add_accelerator("<alt>Z", "app."+action_name, None)
item = Gio.MenuItem()
item.set_detailed_action('app.' + action_name)
item.set_label("RandomAlbum")
app.add_plugin_menu_item('tools', "unique name", item)
为什么加速器没有显示的想法 - 但仍然响应键盘控制?
完整的来源是:
答案 0 :(得分:7)
这个拼图游戏的缺失部分是意识到Gio.MenuItems本身具有属性值。
因此,在这种情况下,在将菜单项添加到GMenu之前,所需的语法是:
item.set_attribute_value("accel", GLib.Variant("s", "<Alt>Z"))
要完成答案,您还可以通过以下方式设置菜单项的标签和操作:
item = Gio.MenuItem() item.set_attribute_value("label", GLib.Variant("s", "RandomAlbum")) item.set_attribute_value("action", GLib.Variant("s", "app."+action_name))
然而,方法set_label
和set_detailed_action
执行相同的角色。