我们知道在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 = canEditList

def appendCanEditItem(self,col,row):

''' 将指定的项目添加到可编辑列表中 '''

if (col,row) not in self.__canEditList:

self.__canEditList.append((col,row))

else:

pass

def removeCanEditItem(self,col,row):

''' 将指定项目从可编辑列表中移除,使其不可编辑 '''

if (col,row) in self.__canEditList:

self.__canEditList.remove((col,row))

else:

pass

def removeAllCanEditItem(self):

self.__canEditList = []

def canEdit(self,col,row):

''' 判断当前点击的项目是否可编辑 '''

if (col,row) in self.__canEditList:

return True

else:

return False

def currentCanEditItem(self):

''' 返回当前可编辑项目的列表'''

return self.__canEditList

下面是具体的定义方法:self.editableListCtrlTestCaseInfo = EditAbleListCtrl(self.panelTestRecipients,wx.ID_ANY,style=wx.LC_REPORT|wx.LC_ALIGN_LEFT|wx.LC_SORT_ASCENDING)

self.editableListCtrlTestCaseInfo.InsertColumn(0,OpmexConstant.LIST_ITEM_NAME_NO,width=50)

self.editableListCtrlTestCaseInfo.InsertColumn(1,OpmexConstant.LIST_ITEM_NAME_TEAM,width=60)

self.editableListCtrlTestCaseInfo.InsertColumn(2,OpmexConstant.LIST_ITEM_NAME_NAME,width=100)

self.editableListCtrlTestCaseInfo.InsertColumn(3,OpmexConstant.LIST_ITEM_NAME_EMAIL,width=200)

下面是更新可编辑列表数据及控制指定列可编辑的例子:def updateTestCase(self):

''' 将实时数据更新到列表控件中去 '''

if self.editableListCtrlTestCaseInfo.GetItemCount() > 0:

self.editableListCtrlTestCaseInfo.DeleteAllItems()

self.lineNo = 0

tcCount = len(self.__testCaseList)

i = 0

while i < tcCount:

if not self.__commandSet.has_key(self.__testCaseList[i]['commandCode']):

self.__testCaseList.remove(self.__testCaseList[i])

continue

item = wx.ListItem()

self.editableListCtrlTestCaseInfo.InsertItem(item)

self.editableListCtrlTestCaseInfo.SetStringItem(self.lineNo,0,unicode(self.lineNo+1))

self.editableListCtrlTestCaseInfo.SetStringItem(self.lineNo,1,unicode(self.__commandSet[self.__testCaseList[i]['commandCode']]['commandDescription']))

self.editableListCtrlTestCaseInfo.SetStringItem(self.lineNo,2,unicode(self.__testCaseList[i]['ip']))

self.editableListCtrlTestCaseInfo.SetStringItem(self.lineNo,3,unicode(self.__testCaseList[i]['timeout']))

self.editableListCtrlTestCaseInfo.SetStringItem(self.lineNo,4,unicode(self.__testCaseList[i]['executeTime']))

self.editableListCtrlTestCaseInfo.SetStringItem(self.lineNo,5,unicode(json.dumps(self.__testCaseList[i]['parameter'])))

self.editableListCtrlTestCaseInfo.appendCanEditItem(2,self.lineNo)# 设定self.lineNo行2列可编辑

self.editableListCtrlTestCaseInfo.appendCanEditItem(3,self.lineNo)

self.editableListCtrlTestCaseInfo.appendCanEditItem(4,self.lineNo)

if self.__testCaseList[i]['parameter'] != None:

self.editableListCtrlTestCaseInfo.appendCanEditItem(5, self.lineNo)

self.lineNo += 1

i += 1

self.editableListCtrlTestCaseInfo.EnsureVisible(self.lineNo)

如果想改变主意,觉得某些原本可编辑的列现在不让编辑了可以使用:removeAllCanEditItem()# 一次性使全部的可编辑单元格变成不可编辑

removeCanEditItem(col,row)# 使row行,col列变成不可编辑

wxpython wx listctrl_wxPython实现指定单元格可编辑的ListCtrl | 学步园相关推荐

  1. JqGrid之指定单元格可编辑-yellowcong

    JqGrid中,设定指定单元格,官网是没有API的,cell的编辑和不可以编辑,是由not-editable-cell和edit-cell两个样式进行控制的,我们需要在onCellSelect的方法的 ...

  2. POI指定单元格不可编辑

    1. 思路 1.1 所定全表为 lock 状态. 1.2 解锁表格所在的列为 unlock 状态. 1.3 锁定的需要锁定的单元格为 lock 状态. 这样整的原因是: poi 不支持直接对单元格设置 ...

  3. TileList自动滚动指定单元格,可视部分

    TileList自动滚动指定单元格,可视部分 TileList1.scrollToIndex(50)

  4. VBA赋值给指定单元格

    这是一个Range对象基本操作实例,对指定单元格赋值,然后使用弹窗获取值. 代码如下: Sub test1() Worksheets("Sheet1").Range("A ...

  5. excel引用指定单元格数据_Excel数据查找引用函数详解,一看就会用 #办公技巧 #excel #职场

    Lookup函数 简介:在查找区域中搜索查找对象,并映射到结果区域,返回相同位置的值 Lookup函数 =LOOKUP(D2,A2:A6,B2:B6) 结果将找出与产品编号为1003相对应的产品名称 ...

  6. POWERSHELL基于ConvertTo-Htm指定单元格效果css风格html报表

    基于ConvertTo-Htm的css风格和指定单元格效果html报表的生成 PowerShell本身具有一个简单但是很实用的命令 ConvertTo-Htm,可以把整个对象转换成HTML格式.事实上 ...

  7. Py之Xlrd:Xlrd的使用方法总结(获取的sheet名字/sheet索引/sheet内容/数和列数、获取整行和整列的值(列表) 、指定单元格的内容/数据类型)之详细攻略

    Py之Xlrd:Xlrd的使用方法总结(获取的sheet名字/sheet索引/sheet内容/数和列数.获取整行和整列的值(列表) .指定单元格的内容/数据类型)之详细攻略 目录 Xlrd的使用方法总 ...

  8. element更改表格表头、行、指定单元格样式

    element更改表格表头.行.指定单元格样式 更改表格的样式 使用header-cell-style属性,可为函数或对象 函数写法 <!-- html --> <el-table ...

  9. easyexcel 无模板写入_给位,问个问题,用easyExcel无模板导出数据时,怎么在指定单元格添加计算公式呢?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 easyExcel没用过,spire.xls.jar可以给指定单元格添加各种公式 import com.spire.xls.*; public class ...

  10. NPOI 在指定单元格导入导出图片

    NPOI 在指定单元格导入导出图片 Intro 我维护了一个 NPOI 的扩展(WeihanLi.Npoi),主要用来导入导出 Excel 数据,最近有网友提出了导入 Excel 的时候解析图片的需求 ...

最新文章

  1. Spring Boot教程(一)注解配置与EhCache使用
  2. Android动态修改选中和不选中的Button图片颜色
  3. Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议
  4. 网络低俗词_从“低俗小说”中汲取7堂课,以创建有影响力的作品集
  5. fillcolor是什么意思_fill是什么意思
  6. e7用什么主板_主板当中的纽扣电池有什么用?电池没电了会怎样?
  7. 菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串
  8. poj2373 Dividing the Path (单调队列+dp)
  9. 独立游戏人:像素风格游戏制作分享(转)
  10. 12123 上传照片到文件服务器失败,“交管12123”APP上传证件照片老是出错?教你正确上传姿势……...
  11. 基于R16标准的5G电力高精度授时解决方案PTP授时方案
  12. Elasticsearch从入门到精通
  13. fatal: 无法访问 ‘‘github.com/“:GnuTLS recv error (-110): The TLS connection was non-properly terminated.
  14. idea 切换分支smart checkout和force checkout区别
  15. 联想拯救者连不上网?
  16. 【基于Web的网上书城——开题报告 分享(仅供参考呀)】
  17. EasyAdmin CURD命令大全
  18. Java 100以内找质数(多种方式实现)
  19. 2 problems (2 errors, 0 warnings) 2 errors and 0 warnings potentially fixable with the `--fix` opt
  20. python实现文件管理系统_Python文件管理

热门文章

  1. ocp007 题库解析(1-15)
  2. 彻底搞懂git rebase命令
  3. 如何获取maven命令执行后成功与否的返回值
  4. Dagger 注入的简单原理
  5. java语言标识符的声明规范
  6. 如何创建带有.的文件夹
  7. 解决问题:Exception during message handling: Unacceptable CPU info: CPU doesn't have compatibility...
  8. 四万个与RIG漏洞利用套件相关的子域名遭到关闭
  9. 接下来会普及流行能实现《集中授权集中管理,分级授权逐级管理》的标准化权限系统...
  10. javascript实现页面自动刷新和自动跳转代码