1

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 になり、機能メニュー (クリックすると 400 を出力する「Do stuff」と呼ばれる 1 つの項目) と編集可能な文字列の両方が表示されることです。

私が見ている実際の動作は、パネル GUI には文字列とメニューの両方があり、アプリケーション GUI には文字列がありますが、メニューは表示されません。

内からメニューを GUI ウィジェットとして表示する方法はありますInstanceEditorか?

4

1 に答える 1