[wxPython-users] Application Breaks Using Python-2.5
Chris Mellon
arkanes at gmail.com
Mon Nov 12 15:24:59 PST 2007
On Nov 12, 2007 5:07 PM, Rich Shepard <rshepard at appl-ecosys.com> wrote:
> On Mon, 12 Nov 2007, Robin Dunn wrote:
>
> > The error is telling you that the requested col doesn't exist. Are you sure
> > that i is less than the number of columns in the grid?
>
> Robin,
>
> It should be. The last time I edited that page was 2007-09-01, and it's
> worked flawlessly with Python-2.4.3 and wxPython-2.8.0.1. I upgraded the
> distribution on the notebook so it's running Python-2.5.1 and
> wxPython-2.8.6.1.
>
> The code at the top of the module is:
>
> class dataTable(wx.grid.PyGridTableBase):
> data = appData.altData
> rowLabels = ()
> colLabels = ()
>
> def __init__(self, data, rowLabels=None, colLabels=None):
> wx.grid.PyGridTableBase.__init__(self)
> self.data = data
> self.rowLabels = rowLabels
> self.colLabels = colLabels
>
> def GetNumberRows(self):
> if self.appData.projname != ' ':
> self.appData.cur.execute("select count(*) from Variable")
> self.nRows = self.appData.fetchall()
> return self.nRows
> else:
> return 24
>
> def GetNumberCols(self):
> # return len(self.data[0])
> return 33
>
> ...
>
> class modData(wx.Panel):
> def __init__(self, prnt, ID):
> wx.Panel.__init__(self, prnt, wx.ID_ANY)
>
> self.SetHelpText('Enter, edit, and remove existing condition data and alternatives here.')
>
> topLevelBox = wx.BoxSizer(wx.VERTICAL) # Base container for all widgets
> outerBox = wx.BoxSizer(wx.VERTICAL) # Adds to space around widgets
> buttonBox = wx.BoxSizer(wx.HORIZONTAL) # For the Save button; allows placement across
> widgetBox = wx.BoxSizer(wx.VERTICAL) # Holds grid and save button
>
> # Here's where the grid widget is defined.
> self.dataGrid = wx.grid.Grid(self, size=wx.Size(770,440))
> table = dataTable(self)
> self.dataGrid.SetTable(table, True)
>
> # simple cell formatting
> for i in range(0,34):
> self.dataGrid.SetColSize(i, 125)
>
> self.dataGrid.AutoSizeColumns(setAsMin=True)
>
> GetNumberCols() returns 33, and setColSize() matches that.
>
I'm not sure why this would be working anywhere else, but len(range(0,
34)) is 34, not 33.
By the way, the 0 is not neccassary, range defaults to starting from 0.
More information about the wxpython-users
mailing list