wx.grid/wx.grid.GridTableBase не может отображать данные более 7 миллионов строк (с очень простым примером)?

#wxwidgets #wxgrid

Вопрос:

Известно, что виртуальная модель wx.gridtablebase может отображать бесконечные строки, но она не смогла выполнить около 7 миллионов строк. Следующий минимальный пример протестирован на версии wx:
4.1.2a1.dev5165 64e5d863 msw (феникс) wxWidgets 3.1.5. Спасибо.

 import wx
import wx.grid

class GTable(wx.grid.GridTableBase):
    def __init__(self):
        wx.grid.GridTableBase.__init__(self)
        
    def GetNumberRows(self):
        return 10000000

    def GetNumberCols(self):
        return 2

    def GetColLabelValue(self, col):
        return "A" str(col)
        
    def GetRowLabelValue(self, row):
        return str(row 1)
        
    def IsEmptyCell(self, row, col):
        return False

    def GetValue(self, row, col):
        return str(row) '-' str(col)
        
    def SetValue(self, row, col, value):
        pass         

class MyGrid(wx.grid.Grid):
    def __init__(self, parent):
        wx.grid.Grid.__init__(self, parent, -1)
        gtable = GTable()
        self.SetTable(gtable,True)  
        #self.MakeCellVisible(1000000,0)
        #self.AdjustScrollbars()
        #self.ForceRefresh()
        #self.Bind(wx.EVT_SCROLLWIN, self.OnScroll)

class TestFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, "A Grid", size=(400, 400))
        grid = MyGrid(self)

if __name__ == '__main__':
    app = wx.App()
    frame=TestFrame(None)
    app.SetTopWindow(frame)
    frame.Show()
    app.MainLoop()
 

Комментарии:

1. @LMX, какая платформа? Можете ли вы воспроизвести пример сетки C ? Что происходит — вы получаете утверждение или оно просто замедляется?

2. @Игорь: Спасибо за ваш комментарий. Операционная система-Windows 10. Извините, я новичок в wxPython, я не знаю, как воспроизвести его на C . У вас есть какой-нибудь рекомендательный сайт или книги, чтобы я мог узнать о wxpython на C ? Я предполагаю, что wx.grid не смог освободить (или освободить) какие-то ресурсы(память?) когда окна просмотра данных перемещаются из одного положения в другое…

3. wxPython-это оболочка вокруг wxWidgets библиотеки C , это 2 независимые вещи. Теперь, что происходит в вашем случае? И что мы делаем, чтобы увидеть проблему?

4. Что именно вы подразумеваете под «неудачей»? Т. е. что именно происходит, когда вы запускаете свой пример?

5. wx.сетка будет разбита, когда она покажет 7 миллионов строк.