2011-10-25 6 views
1

wxTreeCtrl에서 항목을 어떻게 선택해야합니까?wxtreeCtrl에서 선택한 항목 가져 오기

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

을 그리고 방법 OnAdd에 나는 항목을 얻으려고 : I는 다음과 같이 활성화 된 항목에 대한 방법을 결합

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

를하지만 그 사건이 더 GetItem() 방법이 없습니다 오류가 있습니다. 어떤 생각?

업데이트 : 선택한 항목을 처리하는 버튼 이벤트를 할당했다

. 그래서 이벤트에 첨부 된 항목이 없었습니다.

답변

0

콜백을 잘못 바인딩하고 있습니다. 현재 다음을 수행 :

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

그러나 세 번째 매개 변수는 source입니다. id은 네 번째 매개 변수입니다. 그래서,이로 변경 :

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

는 여전히 같은 오류를 work.gaves하지 않습니다 :( –

+0

@Arash을 : 그것은 :) 나를 위해 작동합니다. 나는 당신이 시험해 볼 수있는 완전한 모범을 보였습니다. – jro

+0

고마워요. update.It은 나뿐만 아니라 원래의 코드에서 example.but를 실행합니다. 정확한 변경을 가하면 오류가납니다. –

관련 문제