Я пытаюсь создать серию меню в приложении программы визуализации traitsui. Мой графический интерфейс состоит из последовательности панелей, которые используют разные объекты модели, которые отображаются в основном графическом интерфейсе с помощью InstanceEditors. Это имеет множество преимуществ, в том числе, что панели могут быть просто собраны и перестроены в любое время (что важно для визуализации майяви, поскольку майави является багги, часто лучше просто выбросить сцену и начать с нее после того, как пользователь внесет много изменений).MenuBar не появляется внутри InstanceEditor
У меня возникла проблема, что меню не отображаются ни в одной из подпанелей в моем графическом интерфейсе.
Вот минимальный рабочий пример.
from traits.api import HasTraits, Str, Instance
from traitsui.api import Menu, View, MenuBar, Action, Item, InstanceEditor
class Panel(HasTraits):
field = Str('placeholder_variable')
stuff_action = Action(name='Do stuff', action='do_stuff')
view = View(
Item('field'),
menubar = MenuBar(Menu(stuff_action, name='Menu')),
)
def do_stuff(self):
print '400'
class Application(HasTraits):
panel = Instance(Panel,())
view = View(
Item('panel', editor=InstanceEditor(), style='custom'))
Application().configure_traits()
Ожидаемое поведение является то, что вызовы Panel().configure_traits()
и Application().configure_traits()
результат в том же графическом интерфейсе, как с функциональным меню (с одним пунктом под названием «Do материал», который печатает 400 при нажатии) и строки, которые можно редактировать ,
Фактическое поведение, которое я вижу, состоит в том, что графический интерфейс панели имеет как строку, так и меню, в то время как графический интерфейс приложения имеет строку, но меню не отображается.
Есть ли способ сделать меню отображаемым как графический графический интерфейс внутри InstanceEditor
?
Да Добавление меню на внешнюю панель не является проблемой технически. Но это было бы гораздо более удобным дизайном и, возможно, более простым для пользователя, я думаю, если бы в подпанелях было свое меню, связанное с выполнением различных функций внутри подпанелей, вместо того, чтобы иметь код для обработки действий в одной гигантской строке в самом внешнем графическом интерфейсе. – aestrivex
Мини-меню, относящиеся к подзаголовку, нарушат стандартное соглашение с графическим интерфейсом (меню и панели инструментов относятся к приложению). Однако вы могли бы добавить кнопки в вложенное представление. –
Вот как выглядел графический интерфейс в прошлых циклах, подпанели были загроможденными кнопками. Но поскольку я добавил все больше и больше функций, которые только что получили, слишком много кнопок. – aestrivex