我正在嘗試創建一個查找表,將wxTreeItem
連接到對象。在選擇或雙擊該項目時,應該對該對象採取行動。 神祕地,我發現在AppendItem
之後返回的物品實例是附加到樹上的真實物品的副本,或者self.tree.GetSelection()
和event.GetItem()
返回有問題物品的副本。wx.Treectrl項目查找表
import wx
class RandomObj(object):
def __init__(self, name):
self.name = name
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')
self.itemLUT = {}
for obj in [RandomObj('item1'), RandomObj('item2'), RandomObj('item3')]:
item = self.tree.AppendItem(root, obj.name)
print item
self.itemLUT[id(item)] = obj
self.itemLUT[id(obj)] = item
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivated, self.tree)
self.tree.Expand(root)
def OnActivated(self, event):
item = event.GetItem()
print 'Double clicked on', self.tree.GetItemText(item)
print id(item) in self.itemLUT.keys()
print self.tree.GetSelection()
print item
app = wx.PySimpleApp(None)
TreeExample().Show()
app.MainLoop()
有什麼建議嗎?是否有任何適當的方式來連接和訪問一個對象的行爲(鼠標或鍵盤)上的一個樹項目。