表格控件是wxPython中最复杂的控件之一,表格控件通常用于浏览数据。
一、表格控件的创建
wxPython的表格控件功能非常强大,提供了数据展示的方法。表格控件可以显示二维形式的数据。wxPython提供了wx.grid包,wx.grid包提供了创建和控制表格的方法。
下面使用Grid类创建一个二维表格:
#使用Grid类创建一个二维表格
import wx
import wx.grid
class MyFrame(wx.Frame):
def __init__(self):
#设置行
rowTitles = [u'第1行',u'第2行',u'第3行',u'第4行']
#设置列
colTitles = [u'第1列',u'第2列',u'第3列',u'第4列']
wx.Frame.__init__(self,None,title=u'表格',size=(450,200))
grid = wx.grid.Grid(self) #定义表格控件
grid.CreateGrid(4,4) #行列数
for row in range(4):
grid.SetRowLabelValue(row,rowTitles[row]) #设置行标题
grid.SetColLabelValue(row,colTitles[row]) #设置列标题
for col in range(4):
grid.SetCellValue(row,col,str(col))
if __name__=='__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()
二、通过PyGridTable创建表格
表格控件还可以通过PyGridTable来创建,PyGridTable可以制定更复杂的表格。通过继承PyGridTableBase()类可以实现对表格控件更复杂的设置,继承PyGridTableBase类必须实现GetAttr()、Get Number Rows()、GetNumberCols()、GetValue()和SetValue()这些方法。设置表格的奇数行和偶数行的颜色便于数据浏览,是程序界面设计中经常需要实现的功能。
下面演示PyGridTable创建区分奇数行和偶数行的表格控件:
#演示PyGridTable创建区分奇数行和偶数行的表格控件
import wx
import wx.grid as grid
class OddEvenTable(grid.PyGridTableBase):
def __init__(self):
grid.PyGridTableBase.__init__(self)
self.odd = grid.GridCellAttr() #获取奇数行
#设置偶数行的背景为黄色
self.odd.SetBackgroundColour("yellow")
self.even = grid.GridCellAttr #获取偶数列
#对每个单元格进行控制
def GetAttr(self,row,col,kind):
#对奇、偶行进行过滤
attr = [self.even,self.odd][row % 2