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

时间:2019-03-21 07:16:11

标签: python python-3.x user-interface wxpython

我的代码是HyperTreeList的示例,我将其与可通过Doubleclick进行编辑的预定义列一起使用。 我希望所有列都可以被编辑。因此,我需要检查doubleclick事件在哪一列中。

我该怎么做?

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

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()

1 个答案:

答案 0 :(得分:1)

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

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()