是否有从XML加载GMenu的等效方法?

时间:2013-04-26 12:49:38

标签: python python-2.7 gtk gtk3

我一直在使用Glade在菜单栏中为基于Gtk3.4 / 3.6的应用程序创建我的应用程序菜单:

<object class="GtkMenu" id="popup_menu">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <child>
      <object class="GtkMenuItem" id="play_album_menu_item">
        <property name="use_action_appearance">False</property>
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="tooltip_text" translatable="yes">Play this album</property>
        <property name="label" translatable="yes">Play Album</property>
        <property name="use_underline">True</property>
        <signal name="activate" handler="play_album_menu_item_callback" swapped="no"/>
      </object>
    </child>

然而,最新的基于Gnome的GTK3.8应用程序已经远离基于GtkMenu / UI-Manager的菜单创建,现在使用基于GMenu和GMenuItem的创建。

我见过Python代码示例,解释了如何单独编写菜单项。

然而,我正在努力节省时间/增加可维护性&amp;通过尝试使用类似的基于Glade XML的菜单创建过程来实现可读性:

  1. 创建GMenu
  2. 创建GMenuItems列表
  3. 设置各种属性,如灵敏度,工具提示
  4. 连接信号事件
  5. 以前我只是做过这样的事情:

    ui = Gtk.Builder()
    ui.add_from_file("menufile.xml")
    ui.connect_signals(self)
    popup_menu = ui.get_object('popup_menu')
    

    etc.etc。

    这与GMenu和GMenuItems有关吗?

    如果是这样,有人可以通过示例Python代码示例或指向现有Python代码的链接指向正确的方向吗?

1 个答案:

答案 0 :(得分:1)

对于C,bloatpad示例显示了可在GtkBuilder文件中使用的新XML格式: https://git.gnome.org/browse/gtk+/tree/examples/bloatpad.c

但是,您必须手动编写这些内容。 Glade还没有让你编辑GMenus,只会默默地删除节点。