2011-10-25 36 views
1

wxTreeCtrlで選択した項目をどのようにして取得しますか?私はこのような動作項目にメソッドをバインドしますwxtreeCtrlから選択項目を取得

self.tree.Bind (wx.EVT_TREE_ITEM_ACTIVATED, self.OnAdd, id=10) 

そして方法OnAddに私はアイテムを取得しよう:

def OnAdd(self, event): 
     item = event.GetItem() 

をしかし、それはイベントが何GetItem()メソッドを持っていないというエラーが発生します。何か案が?

UPDATE:

私が選択した項目を処理するために、ボタンイベントを割り当てられていました。 そのため、イベントにアイテムが添付されていなかったのです。

答えて

0

コールバックを間違ってバインドしています。現在の操作を行います。

self.Bind (wx.EVT_TREE_ITEM_ACTIVATED, self.OnAdd, id=10) 

しかし、3番目のパラメータはsourceです。 idは4番目のパラメータです。だから、このように変更します。

self.tree = wx.TreeCtrl(self, size=(200,100)) # Or however you defined it 
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnAdd, self.tree, id=10) 

この方法では、あなたのOnAdd機能になりますevent引数がGetItem方法が利用可能になりますtreeインスタンスになります。

全例:

import wx 

class TreeExample(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, title='Tree Example', size=(200, 130)) 
     self.tree = wx.TreeCtrl(self, size=(200, 100)) 

     root = self.tree.AddRoot('root') 
     for item in ['item1', 'item2', 'item3']: 
      self.tree.AppendItem(root, item) 
     self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivated, self.tree) 
     self.tree.Expand(root) 

    def OnActivated(self, evt): 
     print 'Double clicked on', self.tree.GetItemText(evt.GetItem()) 

app = wx.PySimpleApp(None) 
TreeExample().Show() 
app.MainLoop() 
+0

はまだ同じエラー:( –

+0

@Arashをwork.gavesしません:それは私の作品:)。私はあなたに試してみるための完全な例を加えました。 – jro

+0

ありがとうございましたupdate.Itは私のためだけでなく、私の元のコードのexample.but私は正確な変更を行ったときに私のために実行されます。その理由は、頭痛 –

関連する問題