我一直在尝试使用Python v2.7.11和wxPython v3.0.2.0来创建电子表格应用。我能够创建并显示电子表格,但每当我输入一些内容(文本,数字等)到一个单元格python时抛出2个错误:
TypeError: PaintBackground() takes exactly 3 arguments (4 given)
TypeError: PaintBackground() takes exactly 3 arguments (4 given)
然后当我更改单元格(通过箭头键或鼠标)时,它会抛出另一个错误:
TypeError: EndEdit() takes exactly 4 arguments (5 given)
无论我进入细胞的是什么都没有保留(细胞仍然是空白的)。
我看到过这些错误,例如here和here,但都没有解决我的具体问题。我搜索了很多,似乎无法找到解决方案。感谢任何帮助,我的代码如下。
电子表格类:
from wx.lib.sheet import CSheet
class FFSpreadSheet(CSheet):
def __init__(self, parent):
super(FFSpreadSheet, self).__init__(parent)
self._row = self._col = 0
self.SetNumberRows(55)
self.SetNumberCols(25)
for i in xrange(55):
self.SetRowSize(i, 20)
def OnGridSelectCell(self, event):
self._row, self._col = event.GetRow(), event.GetCol()
control = self.GetParent().GetParent()._position
value = self.GetColLabelValue(self._col) + self.GetRowLabelValue(self._row)
control.SetValue(value)
event.Skip()
框架类:
import wx
from ffspreadsheet import FFSpreadSheet
class FFMainFrame(wx.Frame):
def __init__(self, parent, id, title):
super(FFMainFrame, self).__init__(parent, -1, title, size=(550, 500))
self._mainsizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(self._mainsizer)
self._toolbar2 = wx.ToolBar(self, wx.TB_HORIZONTAL | wx.TB_TEXT)
self._position = wx.TextCtrl(self._toolbar2)
self._toolbar2.AddControl(self._position)
self._toolbar2.Realize()
self._notebook = wx.Notebook(self, -1, style=wx.RIGHT)
self._sheets = [FFSpreadSheet(self._notebook),
FFSpreadSheet(self._notebook),
FFSpreadSheet(self._notebook)]
self._sheets[0].SetFocus()
self._notebook.AddPage(self._sheets[0], 'Sheet 1')
self._notebook.AddPage(self._sheets[1], 'Sheet 2')
self._notebook.AddPage(self._sheets[2], 'Sheet 3')
self._mainsizer.Add(self._toolbar2)
self._mainsizer.Add(self._notebook, 1, wx.EXPAND)
self.Center()
self.Show()
App类:
import wx
from ffmainframe import FFMainFrame
class FitFit(wx.App):
def OnInit(self):
self._mainframe = FFMainFrame(None, -1, 'FitFit')
return True
if __name__=='__main__':
app = FitFit()
app.MainLoop()
答案 0 :(得分:0)
2012年,PaintBackground()
方法收到了一个新参数:设备上下文。
def PaintBackground(*args, **kwargs):
- """PaintBackground(self, Rect rectCell, GridCellAttr attr)"""
+ """PaintBackground(self, DC dc, Rect rectCell, GridCellAttr attr)"""
自2003年以来,CSheet
类尚未更新。因此,它现在已被破坏。它仍然可以用作代码参考。
我认为您的示例受到我的教程的启发。最近,它已经更新;表格的例子也是如此。 CSheet
已被删除,而wx.grid.Grid
则被使用。