【发布时间】:2023-02-21 13:38:51
【问题描述】:
我想将带有(10 列,1 000 000 行)的 csv 文件加载到具有行自动调整大小的 wx.Grid 上。 自动调整 100 万行的大小所花费的时间太多(> 1 小时,具体取决于数据)。
所以想给wx.Grid实现分页功能。
我的想法:
1个: 使用wx.grid垂直滚动条
- 最初使用自动调整大小加载 1000 行数据。
- 要在到达网格末尾时捕获 wx.grid 垂直滚动条事件,将另外 1000 行附加到网格。
2个:使用菜单选项或按钮
- 在父 Wx.Frame 中创建菜单选项或按钮,名称为 Prev、Next,保持禁用状态。
- 然后在 Wx.Frame 上加载 wx.grid,只有 1000 行数据,自动调整大小,并启用 Prev、Next 选项。
- 每当用户按下任何选项时,清除网格上的数据,并添加接下来的 1000 行数据。
代码为 1: 创建了没有数据的空示例网格。 尝试使用滚动条滚动底部事件来触发 AddRows 函数: (但它不适用于任何滚动条事件,我试过了)
import wx import wx.grid class MyForm(wx.Frame): def __init__(self): wx.Frame.__init__(self, parent=None, title="A Simple Grid") panel = wx.Panel(self) myGrid = MyGrid(panel) myGrid.fillGrid() sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(myGrid, 1, wx.EXPAND) panel.SetSizerAndFit(sizer) self.Maximize() class MyGrid(wx.grid.Grid): def __init__(self, parent): wx.grid.Grid.__init__(self, parent) def fillGrid(self): self.CreateGrid(1000, 10) self.SetColLabelValue(0, "Column1") self.SetColLabelValue(1, "Column2") self.SetColLabelValue(2, "Column3") self.SetColLabelValue(3, "Column4") self.SetColLabelValue(4, "Column5") self.SetColLabelValue(5, "Column6") self.SetColLabelValue(6, "Column7") self.SetColLabelValue(7, "Column8") self.SetColLabelValue(8, "Column9") self.SetColLabelValue(9, "Column10") self.SetDefaultColSize(width=350, resizeExistingCols=True) self.SetDefaultRowSize(height=30, resizeExistingRows=True) # Any proper Scroll Bar Event to Trigger Add new rows. self.Bind(wx.EVT_SCROLL_BOTTOM, self.AddRows) def AddRows(self, event): self.AppendRows(1000, True) if __name__ == "__main__": app = wx.App(False) frame = MyForm().Show() app.MainLoop()概括:
以我在 WxPython 中的有限经验,我无法正确实现上述任何想法。
对于上述 wx.grid 分页的任何想法,我需要一个有效的实现。
并请提出其他可能的想法来实现我对分页功能的需求。
版本:
- Windows V20H2
- 蟒蛇 3.10.7
- WxPython 4.2.0
【问题讨论】:
标签: python grid wxpython paging wxgrid