我们知道在wxPython中,可编辑的列表控件可以通过同时集成wx.lib.mixins.listctrl.TextEditMixin和wx.ListCtrl来实现,但仅此还不够,我们有时还需要特定的列是可编辑的,其余的列不可编辑,下面是我的实现方法,如果大家有更好的,欢迎大家一起讨论。
class EditAbleListCtrl(wx.ListCtrl, listmix.TextEditMixin):
''' 可编辑的列表控件
@note: 使用方式(定义,添加列,插入行数据等)与wx.ListCtrl一样,需要指定x行y列的单元格可编辑方法为:ins.appendCanEditItem(y,x)
'''
def __init__(self,parent,id,pos=wx.DefaultPosition,size=wx.DefaultSize,style=wx.DEFAULT):
wx.ListCtrl.__init__(self, parent, id, pos, size, style)
listmix.TextEditMixin.__init__(self)
self.__canEditList = [] # 可编辑项目列表
def OpenEditor(self, col, row):
''' 控制当前项目能否编辑 '''
if self.canEdit(col, row):
listmix.TextEditMixin.OpenEditor(self, col, row)
else:
pass
def setCanEditList(self,canEditList):
''' 设置某行某列为可编辑
@param editFlagList: @type list: 单个元素是元组类型,参照 self.__canEditList 的说明,
'''
self.__canEditList = ca