如何将子菜单添加到 Gtk 菜单

How to add a sub-menu to a Gtk Menu

我的应用程序中有一个 Gtk 菜单,我想向其添加子菜单。即,当单击主菜单项时,它应该展开另一个菜单项列表(子菜单)。

我已经尝试了一些方法,但它们都不起作用。关于这方面的文档也很少。

这是我的代码:

from gi.repository import Gtk

self.menu = Gtk.Menu()
item = Gtk.MenuItem()
item.set_label("Interfaces")
item.connect("activate", self.app.main_window.cb_show, '')
self.menu.append(item)

#Tried this way but it doesn't work.
# self.sub_menu = Gtk.Menu()
# self.menu.append(self.sub_menu)

item = Gtk.MenuItem()
item.set_label("Configuration")
item.connect("activate", self.app.config_window.cb_show, '')
self.menu.append(item)

self.menu.show_all()

我该怎么做?

更新:

我试过 gtk.MenuItem.set_submenu 但还是不行。

    self.menu = Gtk.Menu()

    item = Gtk.MenuItem()
    item.set_label("Units")
    self.menu.append(item)

    self.sub_menu = Gtk.Menu()
    submenu_item = Gtk.MenuItem()
    submenu_item.set_label("item text")
    item.set_submenu(self.sub_menu)

您需要:

  1. 创建一个 Gtk.Menu 表示子菜单
  2. 在父菜单中创建 Gtk.MenuItem
  3. 使用 gtk.MenuItem.set_submenu
  4. 将子菜单附加到菜单项

类似于:

item = Gtk.MenuItem("Submenu")
self.menu.append(item)
self.sub_menu = Gtk.Menu()
item.set_submenu(self.sub_menu)

菜单只能附加到菜单项,菜单项只能添加到菜单或菜单栏。

您想要的层次结构是:

menubar
    menuitem (sort of a menu header; it's got the label, "File" for instance)
       menu (the actual file menu)
         menuitem (such as "New")
           menu (actually a submenu)
              item ("Text" for instance)

只能使用 set_submenu() 附加菜单对象。

只能使用 append() 附加 MenuItem。