Gtk 3.0 MenuItem () с сеткой () - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь создать меню с Gtk3 и Python, в котором его записи выровнены как HTML-таблица. значения столбцов имеют разную длину. я хочу, чтобы меню выглядело так:

entry 1      text-of-some-length     1000
entry 2      shorter-text            10
entry 2      shorter-text            100

Думаю, я могу просто использовать Gtk.Grid (), добавить к нему Gtk.Labels () и затем добавить сетку к Gtk.MenuItem (). Вот моя попытка

gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject
gi.require_version('AppIndicator3', '0.1')
from gi.repository import AppIndicator3 as appindicator
from os.path import expanduser

#init AppIndicator3 in class
self.ind = appindicator.Indicator.new ("todo-txt-indicator", PANEL_ICON, appindicator.IndicatorCategory.OTHER)
self.ind.set_status (appindicator.IndicatorStatus.ACTIVE)

#generate menu for AppIndicator3
menu = Gtk.Menu()

label_1 = Gtk.Label ()
label_1.set_text ('entry 1')

label_2 = Gtk.Label ()
label_2.set_text ('text-of-some-length')

label_3 = Gtk.Label ()
label_3.set_text ('1000')

grid = Gtk.Grid ()
grid.add (label_1)
grid.attach_next_to (label_2, label_1, Gtk.PositionType.RIGHT, 1, 1)
grid.attach_next_to (label_3, label_2, Gtk.PositionType.RIGHT, 1, 1)

menu_item = Gtk.MenuItem ()
menu_item.add (grid)

menu.append (menu_item)

#set menu to AppIndicator3
self.ind.set_menu (menu)

Но это не работает. отображается только последний элемент (label_3) (в самой левой позиции). Я не понимаю, почему это не работает. Любая помощь приветствуется.

...