在ListCtrl
使用TextEditMixin
时,有没有办法禁止用户编辑特定单元格?
我猜Vetos有一些编辑事件,但我找不到它。
答案 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
代替。