wxpython - HyperTreeList 检查事件在哪一列?

wxpython - HyperTreeList check in which column an event was?

我的代码是 HyperTreeList 的示例,我使用预定义的列工作,可以使用双击进行编辑。 我希望能够编辑所有列。所以我需要检查双击事件在哪一列。

我该怎么做?

到目前为止,这是我的代码:

import wx
import wx.lib.agw.hypertreelist as HTL

class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, "HyperTreeList Demo")

        self.tree = HTL.HyperTreeList(self)
        self.tree.AddColumn("First column")
        self.tree.AddColumn("Column 1")
        self.tree.AddColumn("Column 2")
        root = self.tree.AddRoot("Root")
        parent = self.tree.AppendItem(root, "First child")
        child = self.tree.AppendItem(parent, "First Grandchild")
        self.tree.AppendItem(root, "Second child")

        self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnEditItem, self.tree)        

    def OnEditItem(self, evt):
        item = self.tree.GetSelection()
        itemParent = item.GetParent()
        if itemParent != None:
            itemParentText = itemParent.GetText()            
            if itemParentText == "First child":
                # How to check in which column the event was?
                self.tree.EditLabel(item, 1)          

app = wx.App(0)
frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()

也许你可以尝试这样的事情:

self.tree.GetMainWindow().Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick)

def OnLeftDClick(self, event):

    pt = event.GetPosition()
    item, flags, column = self.tree.HitTest(pt)
    if item and (flags & wx.TREE_HITTEST_ONITEMLABEL):
        # Use the column return value as you wish
        self.tree.EditLabel(item, column)          


    event.Skip()