我一直在使用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的菜单创建过程来实现可读性:
以前我只是做过这样的事情:
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代码的链接指向正确的方向吗?
答案 0 :(得分:1)
对于C,bloatpad示例显示了可在GtkBuilder文件中使用的新XML格式: https://git.gnome.org/browse/gtk+/tree/examples/bloatpad.c
但是,您必须手动编写这些内容。 Glade还没有让你编辑GMenus,只会默默地删除节点。