Как добавить подменю в меню Gtk - PullRequest
0 голосов
/ 17 октября 2018

В моем приложении есть меню 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 голосов
/ 04 февраля 2019

Меню может быть присоединено только к 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)

Объект Menuможет быть присоединен только с помощью set_submenu ().

Элемент MenuItem может быть прикреплен только с помощью append ().

0 голосов
/ 17 октября 2018

Вам необходимо:

  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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...