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

时间:2018-10-17 05:38:38

标签: python python-3.x gtk

我的应用程序中有一个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)

2 个答案:

答案 0 :(得分:1)

您需要:

  1. 创建一个代表子菜单的 ID Date1 weight 0 123 1/1/2018 -3 1 123 5/5/2017 -10 2 524 2/3/2017 0 3 524 3/3/2017 -40 4 524 4/4/2017 50
  2. 在父菜单中创建一个Gtk.Menu
  3. 使用gtk.MenuItem.set_submenu将子菜单附加到菜单项

类似的东西:

Gtk.MenuItem

答案 1 :(得分:1)

菜单只能附加到MenuItem,而MenuItem只能添加到Menu或Menubar。

您想要的层次结构是:

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。