#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 миллионов строк.