wxpython 4 使用 grid 展示表格

文章导航

wx.grid.Grid

Grid这个控件主要是用于显示和编辑表格数据。
这里写图片描述
控件样式在OS X 系统下显示样式

使用样例

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

这个demo 是从官方文档中摘取的
英语好的亲们 ,直接看代码上的注释就好了,在此只把一些关键方法提出来说明一下。

CreateGrid 方法

可以使用该方法初始化一个固定行数、列数的Grid界面。行列数创建后仍可以使用方法增加行列。

 grid.CreateGrid(100, 10)

SetCellValue 方法

可以使用SetCellValue 将指定行列的单元格内的值进行设置。

grid.SetCellValue(0, 0, 'wxGrid is good')

SetRowLabelValue 、 SetColLabelValue

可以用于改变行标签、列标签。样例界面中,行标签 1、2、3等, 列标签A、B、C等。
SetRowLabelValue第一个参数代表的是当前第几行
SetColLabelValue第一个参数代表的是当前第几列

grid.SetRowLabelValue(0,"1") //第一行标签 1
grid.SetColLabelValue(0,"A") //第一列标签 A

以上几个方法就可以做一个简单的数据展示grid了!

事件

关于grid有几个关键的事件说明一下

事件说明
EVT_GRID_CELL_CHANGING单元格内数据发生变化中
EVT_GRID_CELL_CHANGED单元格内数据发生变化后
EVT_GRID_CELL_LEFT_CLICK左键单击单元格
EVT_GRID_CELL_LEFT_DCLICK左键双击单元格
EVT_GRID_CELL_RIGHT_CLICK右键单击单元格
EVT_GRID_CELL_RIGHT_DCLICK右键双击单元格
EVT_GRID_SELECT_CELL选中单元格事件

绑定事件代码

self.Bind(wx.EVT_GRID_CELL_CHANGED,self.cellChanged,self.grid)

第一个参数:事件
第二个参数:响应方法
第三个参数:事件对象

响应方法需要特别提示一下:
方法必须有一个event 参数 不然无法响应。

def cellChanged(self , event) :
    //todo write event response code 

疑问

在文档中,有个说明,就是在大型数据展示的时候,可以使用setTable(),方法设置一个wx.grid.GridTableBase的自定义子类。这样就可以做到数据与界面逻辑分离。

但是我写了一个GridTableBase的子类,setTable后并没有什么反应。不知道是怎么回事。只能是使用setCellValue 方法 循环将数据放置在grid上。

有大牛知道这个东西在 wxPython 4 中怎么使用吗。可以给小弟一个demo参考一下吗?

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值