wx.grid 简单使用
继承 wx.grid.Grid 类
class MyGrid(wx.grid.Grid):
def __init__(self,parent):
wx.grid.Grid.__init__(self,parent,-1)
self.CreateGrid(2,2)
self.SetColLabelValue(0,'表头1')
self.SetColLabelValue(1,'表头2')
self.SetRowLabelValue(0, '第一行')
self.SetCellValue(0,0, '值1')
self.SetCellValue(0,1, '值2')
self.SetRowLabelValue(1, '第一行')
self.SetCellValue(1,0, '值1')
self.SetCellValue(1,1, '值2')
继承 wx.Frame 类
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,'Grid 使用',pos=wx.DefaultPosition, size=wx.DefaultSize)
# 使用 PyGridTableBase 创建grid
grid = MyGrid(self)
显示
if __name__ == '__main__':
app = wx.App()
frame = MyFrame()
frame.Show(True)
app.SetTopWindow(frame)
app.MainLoop()
使用wx.grid.Grid().SetTable
继承 wx.grid.GridTableBase
class GeneicTbale(wx.grid.GridTableBase):
def __init__(self, data, rowLables=None,coLabels=None):
wx.grid.GridTableBase.__init__(self)
print('GeneicTbale')
self.data = data
self.rowlables = rowLables
self.colabels = coLabels
pass
# 设置多少行
def GetNumberRows(self):
print('GetNumberRows', self.data[0])
return len( self.data)
# 设置多少列
def GetNumberCols(self):
print('GetNumberCols')
return len( self.data[0])
# 设置行 标题
def GetRowLabelValue(self, row):
if self.rowlables :
return self.rowlables[row]
# 设置列 标题
def GetColLabelValue(self, col):
print('GetColLabelValue', col)
if self.colabels :
return self.colabels[col]
def IsEmptyCell(self,row, col):
return False
# 设置值
def GetValue(self, row, col):
return self.data[row][col]
def SetValue(self, row, col,value):
pass
重新创建grid
class MyGrid(wx.grid.Grid):
def __init__(self,parent):
wx.grid.Grid.__init__(self,parent,-1)
data = [['a1','b1'],['a2','b2']]
colLabels = ('a','b')
rowLabels = ('1','2')
tableBase = GeneicTbale(data,rowLabels,colLabels)
self.SetTable(tableBase,True)
self.AutoSize()
问题
刚开始使用SetTable 方法时,显示的窗口一直卡死。Grid 也不显示。通过设置SetTable的第二个参数为True即可解决。 self.SetTable(tableBase,True)