wx.ListCtrl with TextEditMixin - 禁用所选单元格的编辑

时间:2012-10-09 18:53:30

标签: python listview wxpython

ListCtrl使用TextEditMixin时,有没有办法禁止用户编辑特定单元格?

我猜Vetos有一些编辑事件,但我找不到它。

3 个答案:

答案 0 :(得分:10)

事件wx.EVT_LIST_BEGIN_LABEL_EDIT:

class EditableListCtrl(wx.ListCtrl, listmix.TextEditMixin):
    def __init__(self, parent, ID=wx.ID_ANY, pos=wx.DefaultPosition,
                 size=wx.DefaultSize, style=0):
        wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
        listmix.TextEditMixin.__init__(self)
        self.Bind(wx.EVT_LIST_BEGIN_LABEL_EDIT, self.OnBeginLabelEdit)

    def OnBeginLabelEdit(self, event):
        if event.m_col == 1:
            event.Veto()
        else:
            event.Skip()

答案 1 :(得分:1)

我记得,你必须绑定到EVT_LIST_BEGIN_LABEL_EDIT。然后在您的事件处理程序中,您只需检查您所在的列,如果您在要编辑的列中,则执行“event.Allow()”,否则您将否决。

答案 2 :(得分:1)

在wxPython 4.0.0版中,行:

if event.m_col == 1 不起作用。使用

if event.GetColumn() == 1

代替。