7

ListCtrl使用with时有什么方法可以禁用用户对特定单元格的编辑TextEditMixin

我想有某种方式可以否决编辑事件,但我找不到它。

4

3 回答 3

12

事件 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()
于 2012-10-09T20:19:18.400 回答
2

在 wxPython 4.0.0 版中,该行:

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

if event.GetColumn() == 1

反而。

于 2017-08-02T08:26:37.780 回答
1

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

于 2012-10-09T20:19:30.980 回答