DataGrid

      在〈DataGrid〉中尚無留言

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()

python_datagrid

資料庫與DataGrid

圖例如下

python_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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *