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

标签 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 代码示例。

但是,我试图通过尝试使用类似的基于 Glade XML 的菜单创建过程来节省时间/提高可维护性和可读性:

  1. 创建 GMenu
  2. 创建 GMenuItems 列表
  3. 设置各种属性,例如灵敏度、工具提示
  4. 连接信号事件

以前我只是做了类似的事情:

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

等等等等

这对于 GMenu 和 GMenuItems 可能吗?

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

最佳答案

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

但是,您必须手写这些内容。 Glade 尚不允许您编辑 GMenu,只会默默地删除节点。

关于python - 是否有等效的方法从 XML 加载 GMenu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236899/

相关文章:

c - 在新窗口中从 GTKEntry 获取整数

python - 在 Gtk.PopoverMenu 中创建单选操作

Python:将参数发送给字典中的函数

python - 为什么 python 中的空函数调用对于动态编译的 python 代码要慢 15% 左右

logging - Python 日志记录 : display only information from debug level

python - Python 中更好、更准确的 MIME 类型检测

python - 如何使用 python 的 scikit-learn 制作推荐模型

python - 用于建议的隐式 Python 库的空白结果

Python argparse 如果不是 int 则跳过

python - 如何处理具有多个窗口的林间空地项目