DataGrid基本操作
import wx import wx.grid class GridFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent) # Create a wxGrid object grid = wx.grid.Grid(self, -1) # Then we call CreateGrid to set the dimensions of the grid # (100 rows and 10 columns in this example) grid.CreateGrid(100, 10) # We can set the sizes of individual rows and columns # in pixels grid.SetRowSize(0, 60) grid.SetColSize(0, 120) # And set grid cell contents as strings grid.SetCellValue(0, 0, 'wxGrid is good') # We can specify that some cells are read.only grid.SetCellValue(0, 3, 'This is read.only') grid.SetReadOnly(0, 3) # Colours can be specified for grid cell contents grid.SetCellValue(3, 3, 'green on grey') grid.SetCellTextColour(3, 3, wx.GREEN) grid.SetCellBackgroundColour(3, 3, wx.LIGHT_GREY) # We can specify the some cells will store numeric # values rather than strings. Here we set grid column 5 # to hold floating point values displayed with width of 6 # and precision of 2 grid.SetColFormatFloat(5, 6, 2) grid.SetCellValue(0, 6, '3.1415') self.Show() if __name__ == '__main__': app = wx.App(0) frame = GridFrame(None) app.MainLoop()
資料庫與DataGrid
圖例如下
表格格式設定
import wx.grid as grid class CommodityInfoGridTable(grid.GridTableBase): def __init__(self, datas): grid.GridTableBase.__init__(self) self.datas = datas self.colLabels = [u'ID',u'商品編號', u'商品規格', u'商品顏色', u'定型版號',u'存放櫥位',u'商品售價'] self.odd = grid.GridCellAttr() self.odd.SetReadOnly(True) self.odd.SetBackgroundColour('#f0f0f0') self.even = grid.GridCellAttr() self.even.SetReadOnly(True) self.even.SetBackgroundColour('#e0e0e0') pass def GetAttr(self, row, col, kind): attr = [self.even, self.odd][row % 2] attr.IncRef() return attr def GetNumberRows(self): return len(self.datas) def GetNumberCols(self): return len(self.colLabels) def GetColLabelValue(self, col): return self.colLabels[col] def GetRowLabelValue(self, row): return str(row) def GetValue(self, row, col): return self.datas[row][col]
資料填入
def RefreshGrid(self): self.grid.ClearGrid() conn = mysql.connect(host=G.dbHost, user=G.dbAccount, password=G.dbPassword, database=G.dbName) cursor = conn.cursor() cursor.execute("select * from 廠商資料") vendorList=[list(i) for i in cursor.fetchall()] cursor.close() conn.close() self.grid.SetTable(CommodityInfoGridTable(vendorList), True) self.grid.SetColSize(0, 0) ''' self.grid.SetColSize(0, 0) self.grid.SetColSize(1, 200) self.grid.SetColSize(2, 200) self.grid.SetColSize(3, 220) ''' self.Layout()
todo