【发布时间】:2012-09-30 04:02:52
【问题描述】:
在使用ListCtrl 和TextEditMixin 时,有什么方法可以禁用用户对特定单元格的编辑?
我想有某种方式可以否决编辑事件,但我找不到它。
【问题讨论】:
在使用ListCtrl 和TextEditMixin 时,有什么方法可以禁用用户对特定单元格的编辑?
我想有某种方式可以否决编辑事件,但我找不到它。
【问题讨论】:
事件 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()
【讨论】:
在 wxPython 4.0.0 版中:
if event.m_col == 1
不起作用。使用
if event.GetColumn() == 1
改为。
【讨论】:
我记得,您必须绑定到 EVT_LIST_BEGIN_LABEL_EDIT。然后在您的事件处理程序中,您只需检查您所在的列,如果您位于您希望可编辑的列中,则执行“event.Allow()”,否则您否决。
【讨论】:
evt.Veto()和evt.Allow()有什么区别?
Allow 是“这与否决权相反:它明确允许处理事件。” Skip 是“此方法可用于事件处理程序中,以控制是否在当前事件返回后调用绑定到此事件的其他事件处理程序。”,除了 Allow 仅在NotifyEvent 的孩子...