代码之家  ›  专栏  ›  技术社区  ›  Sapnesh Naik

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

  •  0
  • Sapnesh Naik  · 技术社区  · 6 年前

    我有一个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 回复  |  直到 4 年前
        1
  •  2
  •   el.pescado - нет войне    6 年前

    你需要:

    1. Gtk.Menu 表示子菜单
    2. Gtk.MenuItem 在父菜单中
    3. 将子菜单附加到菜单项 gtk.MenuItem.set_submenu

    item = Gtk.MenuItem("Submenu")
    self.menu.append(item)
    self.sub_menu = Gtk.Menu()
    item.set_submenu(self.sub_menu)
    
        2
  •  1
  •   Eric Aya    6 年前

    您需要的层次结构是:

    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)
    

    MenuItem只能使用append()附加。