我使用wx.grid.Grid作为显示表。 网格行数已更改,可能超过2000个。
对于少于1723的行数,GUI通常会显示。
但如果我有大于或等于1723行,GUI显示不正确:
如何将wx.grid.Grid与行数(超过2000)一起使用?
提前致谢。
代码示例:
import wx
import wx.grid
from wx.lib.scrolledpanel import ScrolledPanel
class TestPanel(ScrolledPanel):
def __init__(self, parent):
ScrolledPanel.__init__(self, parent, wx.ID_ANY, size=(640, 480))
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self._create_table(), 1, wx.EXPAND | wx.ALL, 5)
self.SetSizer(self.sizer)
self.SetupScrolling()
self.SetAutoLayout(1)
def _create_table(self):
_table = wx.grid.Grid(self, -1)
_table.CreateGrid(0, 1)
for i in xrange(1723): # Work normally If I use 1722 rows
_table.AppendRows()
_table.SetCellValue(i, 0, str(i))
return _table
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
title="Scroll table", size=(640, 480))
self.fSizer = wx.BoxSizer(wx.VERTICAL)
self.fSizer.Add(TestPanel(self), 1, wx.EXPAND)
self.SetSizer(self.fSizer)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = TestFrame()
app.MainLoop()
答案 0 :(得分:0)
在这种情况下,您应该使用wx.Panel
而不是ScrolledPanel
。网格能够自己管理其滚动,它不需要从其父级获得任何帮助。
如果您要显示其他小部件不适合面板,并且您希望能够在视图中滚动它们和网格,那么使用ScrolledPanel
是合适的,但是应该做一些事情来约束网格的大小,这样它就不会尝试扩展以显示所有单元格。