WxPython, Как реализовать функцию подкачки для wx.grid.Grid? ⇐ Python

Программы на Python
Anonymous
WxPython, Как реализовать функцию подкачки для wx.grid.Grid?

Сообщение Anonymous »

Я хочу загрузить CSV-файл с (10 столбцов, 1 000 000 строк) в wx.Grid с автоматическим изменением размера строк.
Время, необходимое для автоматического изменения размера 1 миллиона строк, слишком велико (>1 час). в зависимости от данных).
Поэтому я хочу реализовать функцию разбиения на страницы в wx.Grid.
Идеи, которые у меня есть в разум:
1: использование вертикальной полосы прокрутки wx.grid
  • Первоначально загрузить 1000 строк данных с автоматическим размером.
  • Чтобы перехватить событие вертикальной полосы прокрутки wx.grid при достижении конца сетки, добавьте в сетку еще 1000 строк.
2: Использование пункта меню или кнопок
  • Создайте пункты меню или кнопку в родительском Wx.Frame с помощью имена как Prev, Next, оставляя их отключенными.
  • Затем загрузите wx.grid в Wx.Frame только с 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
  • Python 3.10. 7
  • WxPython 4.2.0


Подробнее здесь: https://stackoverflow.com/questions/750 ... -grid-grid

Вернуться в «Python»