我正在尝试在我的 traitsui 可视化程序应用程序中构建一系列菜单。我的 GUI 由一系列面板组成,这些面板都使用不同的模型对象,这些面板都使用 InstanceEditors 显示在主 GUI 中。这有很多好处,包括面板可以随时被垃圾收集和重建(这对于 mayavi 可视化很重要,因为 mayavi 有问题,通常最好在用户进行大量更改后丢弃场景并重新开始)。
我遇到的问题是菜单没有出现在我的 GUI 的任何子面板中。
这是一个最小的工作示例。
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()
结果在相同的 GUI 中,具有功能菜单(带有一个名为“Do stuff”的项目,单击时打印 400)和可以编辑的字符串。
我看到的实际行为是面板 GUI 既有字符串又有菜单,而应用程序 GUI 有字符串但菜单没有出现。
有没有办法让菜单从内部显示为 GUI 小部件InstanceEditor
?