2011-09-19 9 views
0

私はenvisage workbanceを使用しています。ハンドラでサービスを取得したいと思います。 _tcp_send_changed機能では、どのようにサービスを受けることができますか。プラグインにはself.application.get_service(....)がありますが、ここにどのように到達できますか?ハンドラでenvisageサービスを取得する


UPDATEDこれが私の見解

class MCLidarGUIView(HasTraits):   
    traits_ui_view = View( 
     VGroup( 
      HGroup( 
       Item('lidar_list', 
        show_label = False, 
        editor = TabularEditor( 
         show_titles = False, 
         selected = 'selected', 
         editable = False, 
         multi_select = True, 
         adapter = LidarAdapter()      
        ), 
       ), 
      ), 
      Item( 
       "lidars_command" 
      ), 
      HGroup( 
        Item('handler.tcp_send', 
         show_label = False, 
         editor = ButtonEditor(label = "TCP:Send")       
       ), 
      ) 
     ), 

     id = 'forwind.lidarapi.giuview', 
     resizable = True, 
     handler = MCLidarActions() 

    )  

    lidar_list = [LidarObject(lidar_name = "No Connected Lidar")] 
    lidars_command = '' 

であり、これは私のハンドラである:

class MCLidarActions(Handler): 

    tcp_send = Event 

    def object__updated_changed(self, info): 
     print info; 
     pass; 

    def _tcp_send_changed(self): 
     print(" info") 

答えて

1

クラスMyHandlerという(ハンドラ):

def __init__(self, application, **traits): 
    Handler.__init__(self, **traits) 
    self.application = application 

...

+0

ありがとうございました。それが私が探しているものです。 –

1

私は推測しているが、それは次のように縫い目documentationからまずサービスを登録する必要があります。たぶん私たちがもっと助けることができるように、もう少しコードを示してください。

+0

はいそれは本当である、そこにドキュメントがあるが、あなたはクラスはプラグインクラスから継承した場合にのみ、アプリケーションへのアクセスを得ることができます。 –

+0

あなたのハンドラ部分はアプリケーションではありませんか? – Glaslos

+0

はい、アプリケーションの一部ですが、別のクラスです。 –

関連する問題