该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
窗口和表格代码是从网上找来的。
自己在按钮动作上加了添加行命令: self.grid.AppendCols(numCols=1)
运行后报错如下:
app = wx.PySimpleApp()
Traceback (most recent call last):
File "D:\email\test\wintest.py", line 52, in OnTest
self.grid.AppendCols(numCols=1)
File "D:\Python27\lib\site-packages\wx-3.0-msw\wx\grid.py", line 1285, in AppendCols
return _grid.Grid_AppendCols(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "Assert failure" failed at ..\..\src\generic\grid.cpp(1129) in wxGridTableBase:
:AppendCols(): Called grid table class function AppendCols
but your derived table class does not override this function
请问这个报错是怎么回事,怎么排除?
或者在初始化生成表格后怎样重新生成表格~
谢谢回复
代码如下:
import wx, wx.grid
class GridData(wx.grid.PyGridTableBase):
_cols = "a b c".split()
_data = [
"1 2 3".split(),
"4 5 6".split(),
"7 8 9".split()
]
_highlighted = set()
def GetColLabelValue(self, col):
return self._cols[col]
def GetNumberRows(self):
return len(self._data)
def GetNumberCols(self):
return len(self._cols)
def GetValue(self, row, col):
return self._data[row][col]
def SetValue(self, row, col, val):
self._data[row][col] = val
def GetAttr(self, row, col, kind):
attr = wx.grid.GridCellAttr()
attr.SetBackgroundColour(wx.GREEN if row in self._highlighted else wx.WHITE)
return attr
def set_value(self, row, col, val):
self._highlighted.add(row)
self.SetValue(row, col, val)
class Test(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.data = GridData()
self.grid = wx.grid.Grid(self)
self.grid.SetTable(self.data)
btn = wx.Button(self, label="set a2 to x")
btn.Bind(wx.EVT_BUTTON, self.OnTest)
self.Sizer = wx.BoxSizer(wx.VERTICAL)
self.Sizer.Add(self.grid, 1, wx.EXPAND)
self.Sizer.Add(btn, 0, wx.EXPAND)
def OnTest(self, event):
self.grid.AppendCols(numCols=1)
#self.data.set_value(1, 0, "x")
self.grid.Refresh()
app = wx.PySimpleApp()
app.TopWindow = Test()
app.TopWindow.Show()
app.MainLoop()