某某网站建设策划书2000字,网站开发 总结报告,cms门户网站模板下载,注册网站会员需要填写信息设置单元格属性将新GridCellAttr添加到GridCellAttrProvider名单。 随着列表的增长#xff0c;查找单元格的特定属性(通过遍历列表和比较坐标)变得越来越慢。您可以尝试通过PyGridTableBase.SetAttr和GetAttr(例如使用字典)实现自己的加快步伐#xff1a;编辑#xff1a;更新…设置单元格属性将新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 colsreturn 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 attrself.atts[HASH].DecRef()#assign new attributeself.atts[HASH] attrdef GetAttr(self,row,col,kind):HASH self.Hash(row, col)if HASH in self.atts:attr self.atts[HASH]attr.IncRef() # increment reference countreturn attrreturn None要允许设置整个行和列你还必须实现def SetRowAttr(self,attr,row):for col in range(self.GetNumberCols()):attr.IncRef() # increment reference count for SetAttrself.SetAttr(attr,row,col)attr.DecRef() # attr passed to SetRowAttr no longer neededdef 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()。但是这会阻止直接访问表格。