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