小记以前一个QQ农场偷菜软件
我的展示农作物的表格有点复杂,
数据类继承Grid.PyGridTableBase,显示类继承Grid.PyGridCellRenderer
问题是当我在运行时要切换表格中的数据时,表格并不随之动态更新。这个问题困扰了我很久,曾经逼得我建了3个表格,切换数据时隐藏另外两个。可这个解决方案实在不漂亮。一次次Google加一次偶然的灵机一动,I hack it !!!
此过程需要以下三步的配合,我写成一个方法:
def SwitchData(self, rows)
#1.删除原来所有的数据
self.DeleteRows(0, self.GetNumberRows())
_msg = Grid.GridTableMessage(self.GetTable(),
Grid.GRIDTABLE_NOTIFY_ROWS_DELETED,
0, #index of the first row
self.GetNumberRows() #the number of rows to be removed
)
self.ProcessTableMessage(_msg)
#2.添加新的数据
self.GetTable().AppendRows(rows) #数据类中的一个增加行的函数,自定义
_msg = Grid.GridTableMessage(self.GetTable(),
Grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, # what we did to it
self.GetTable().GetNumberRows() # how many
)
self.ProcessTableMessage(_msg)
#3.强制更新表格视图
self.AutoSizeColumns()
self.AutoSizeRows()