콜백을 잘못 바인딩하고 있습니다. 현재 다음을 수행 :
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()
출처
2011-10-25 14:13:30
jro
는 여전히 같은 오류를 work.gaves하지 않습니다 :( –
@Arash을 : 그것은 :) 나를 위해 작동합니다. 나는 당신이 시험해 볼 수있는 완전한 모범을 보였습니다. – jro
고마워요. update.It은 나뿐만 아니라 원래의 코드에서 example.but를 실행합니다. 정확한 변경을 가하면 오류가납니다. –