设置单元格属性将新GridCellAttr添加到GridCellAttrProvider名单。 随着列表的增长,查找单元格的特定属性(通过遍历列表和比较坐标)变得越来越慢。

您可以尝试通过PyGridTableBase.SetAttr和GetAttr(例如使用字典)实现自己的加快步伐:

编辑:更新后的代码,以允许重写属性和仿效的默认实现属性的所有权。

class MyTable(wx.grid.PyGridTableBase):

atts = {}

def Hash(self,row,col):

#FIXME: assumes a constant number of rows and rows > cols

return col + row * self.GetNumberRows()

def SetAttr(self,attr,row,col):

HASH = self.Hash(row, col)

if HASH in self.atts:

# decrement usage count of existing attr

self.atts[HASH].DecRef()

#assign new attribute

self.atts[HASH] = attr

def GetAttr(self,row,col,kind):

HASH = self.Hash(row, col)

if HASH in self.atts:

attr = self.atts[HASH]

attr.IncRef() # increment reference count

return attr

return None

要允许设置整个行和列,你还必须实现:

def SetRowAttr(self,attr,row):

for col in range(self.GetNumberCols()):

attr.IncRef() # increment reference count for SetAttr

self.SetAttr(attr,row,col)

attr.DecRef() # attr passed to SetRowAttr no longer needed

def SetColAttr(self,attr,col):

for row in range(self.GetNumberRows()):

attr.IncRef()

self.SetAttr(attr,row,col)

attr.DecRef()

注:路过时GridCellAttr到Set*Attr(),默认的实现将采取属性的所有权。 要重新使用相同的属性(例如存储在类变量中),您必须先将其使用Clone()或将其使用计数递增(IncRef()) ,然后再将其传递给Set*Attr()方法(克隆可能会增加内存消耗)。

上述示例没有正确删除属性:SetAttr()可能会检查无attr并在指定的坐标处递减ref计数,然后从dict中删除条目。 SetCol/RowAttr()可以通过添加为ROW和COL,类似于SetAttr() http://stardict.sourceforge.net/Dictionaries.php下载进行优化。 GetAttr()然后可以检查行和冒号中的现有条目,并使用单元格dict中的属性(这是默认实现使用的原则)合并/覆盖该属性。要正确清理字典,请在.clear()之前的每个条目上拨打DecRef。

或者,您可以从wx.grid.GridCellAttrProvider派生并附加PyGridTableBase.SetAttrProvider()。但是,这会阻止直接访问表格。

wxpython下载缓慢_我可以在wxPython的wx.grid.Grid中加速优化GridCellAttr的使用吗?相关推荐

  1. 视频下载工具 (python爬虫和wxpython实现)

    本工具是用python语言实现功能,wxPython实现界面,pyinstaller打包成的电脑软件. 软件已经全部上传 我的gitee库 ,可自行下载使用. 目录 一.图片展示 1.界面展示 2.实 ...

  2. WXpython下载很慢安装包教程,直接安装不上,只好把所有包下载下来

    首先确定好自己的python支持哪些版本的whl文件 链接:https://pan.baidu.com/s/1jlLKQWH3D-YTUcohi6F0dA?pwd=abc1  提取码:abc1  内含 ...

  3. python模块下载过程_常用的python模块及安装方法

    bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...

  4. 爬虫python下载视频_用python做爬虫下载视频

    用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作.下面和大家分享一下我用python爬取某网站视频的案例.用pytho ...

  5. 腾讯视频下载位置_腾讯视频怎么下视频到手机

    很多人都使用腾讯视频,播放器家园网小编给大家分享一下腾讯视频下载位置_腾讯视频怎么下视频到手机相关内容.作为国内首家,全力打造正版视频平台的腾讯视频,将从流畅的观映体验.高清的视觉效果.贴心的分享感受 ...

  6. 腾讯视频下载官方_腾讯视频评论在哪

    本文给大家整理了腾讯视频下载官方_腾讯视频评论在哪方面的内容.腾讯视频影音是一款界面轻松友好,功能全面完善,方便好用,绿色安全,完全免费的.专注视频播放的客户端软件,您可运行腾讯视频影音,在线享受腾讯 ...

  7. 腾讯视频下载格式_怎么下载腾讯视频

    不管这个腾讯视频好用与否,都有一大批用户,本文播放器家园网小编分享腾讯视频下载格式_怎么下载腾讯视频.腾讯视频时刻为您推荐最新最火的视频,精彩不断随时观看.支持各种画质的下载,没网也能享受高视觉的享受 ...

  8. 腾讯视频下载电脑_腾讯视频如何设置允许腾讯视频驻留功能

    本文给大家整理了腾讯视频下载电脑_腾讯视频如何设置允许腾讯视频驻留功能方面的内容.腾讯视频不断实践"三网合一"的使命,现已覆盖互联网.电视.移动三大终端,兼具影视.综艺.资讯三大内 ...

  9. 腾讯视频真实下载地址_腾讯视频如何多倍速播放视频

    腾讯视频官网版是一款专注视频播放的客户端软件,您可运行腾讯视频,在线享受奇艺网站内全部免费高清正版视频.腾讯视频视频播放器内容丰富,影视更新快,包含腾讯视频所有的视频内容,在线享受腾讯视频站内全部免费 ...

最新文章

  1. 关于Python里的super用法研究
  2. Mercurial hg web server的配置
  3. java 对象流_java 对象流的简单使用
  4. 英文.数字和中文混合的彩色验证码【JSP】
  5. 1分钟破5亿,华为Mate 30系列抢疯了!
  6. 公司的终极目的不是营利:贝佐斯商业新哲学
  7. 关于ECLIPSE中JSP代码无提示
  8. POJ 1006 同余方程组
  9. kolla-ansible解析
  10. 2021-1123梦笔记
  11. java 监听udp_Java实现Udp网络编程
  12. roboware studio教程_2.2.RoboWare Studio安装及使用
  13. android pad刷机,平板刷机图文教程详解!小编手把手教你安卓平板电脑怎么刷机
  14. 受保护的Word文档如何编辑?
  15. H3C认证网络工程师H3CNE
  16. Spring事务管理 .
  17. 探析初代虚拟人Lil Miquela的陨落
  18. 一个简单的加密解密程序
  19. java新手案例_java初学者都要掌握的案例
  20. 绿色软件:飞鸽传书使用指南

热门文章

  1. api怎么写_使用Node.js原生API写一个web服务器
  2. 每台计算机需要配置网关吗,每台计算机的IP地址和网关以及子网掩码的设置有哪些规律或者规则吗?...
  3. 四个方面快速排查工业级光纤收发器死机原因
  4. 工业交换机的端口号结构特征
  5. 【渝粤教育】 国家开放大学2020年春季 1107传感器与测试技术 参考试题
  6. 【渝粤教育】广东开放大学 计量经济学 形成性考核 (21)
  7. 【渝粤题库】陕西师范大学100101美学概论作业(高起本)
  8. 【渝粤题库】广东开放大学 市场营销 形成性考核
  9. 经典蓝牙和低功耗蓝牙(BLE)有什么区别?
  10. python脚本设置环境变量_详解如何设置Python环境变量?