我一直在使用 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 代码示例。
但是,我试图通过尝试使用类似的基于 Glade XML 的菜单创建过程来节省时间/提高可维护性和可读性:
- 创建 GMenu
- 创建 GMenuItem 列表
- 设置各种属性,例如灵敏度、工具提示
- 连接信号事件
以前我只是做了类似的事情:
ui = Gtk.Builder()
ui.add_from_file("menufile.xml")
ui.connect_signals(self)
popup_menu = ui.get_object('popup_menu')
等等等等
这对 GMenu 和 GMenuItems 可行吗?
如果是这样,任何人都可以通过示例 Python 代码示例或指向现有 Python 代码的链接为我指明正确的方向吗?