[pyar] Problema con una wxgrid
Javier Haramina
jharamina en gmail.com
Mar Abr 18 22:43:40 ART 2017
Hola tengo el siguiente problema.
Tengo una grilla armada en base a una TableBase, y según leí en el manual de
wxPython, los datos de la grilla los maneja la tabla de base, y hay que
sobreescribir algunos métodos, como GetNumberRows GetNumberCols y otros mas,
y según la bibliografía, cuando uno llama al método de la grilla
GetNumberRows, esta lo deriva hacia el mismo método en la Tabla de base,
El problema que estoy teniendo, es que el método GetNumberRows es llamado
por la grilla solo cuando se asigna la tabla, y luego cuando vuelvo a llamar
a este método desde la grilla, esta no lo transfiere a la tabla base, el
resto de los métodos si lo hace. Quería saber si esto se debe a un error en
las librerías de wx o yo le estoy pifiando en algo.
Aclaro que el código está basado en un ejemplo que esta en el libro wxPython
in action. Yo le agregue algunos print para ver cuando pasa por cada método
Paso el código fuente para que me digan que puede ser
import wx
import wx.grid
class TestTable(wx.grid.PyGridTableBase):
def __init__(self):
wx.grid.PyGridTableBase.__init__(self)
self.data = { (1,1) : "Here",
(2,2) : "is",
(3,3) : "some",
(4,4) : "data",
}
self.odd=wx.grid.GridCellAttr()
self.odd.SetBackgroundColour("sky blue")
self.odd.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))
self.even=wx.grid.GridCellAttr()
self.even.SetBackgroundColour("sea green")
self.even.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))
# these five are the required methods
def GetNumberRows(self):
print "paso por GetNumberRows de la tabla"
return 50
def GetNumberCols(self):
print "paso por GetNumbercols de la tabla"
return 40
def IsEmptyCell(self, row, col):
return self.data.get((row, col)) is not None
def GetValue(self, row, col):
print "paso por GetValue de la tabla"
value = self.data.get((row, col))
if value is not None:
return value
else:
return ''
def SetValue(self, row, col, value):
print "paso por SetValue de la tabla"
self.data[(row,col)] = value
# the table can also provide the attribute for each cell
def GetAttr(self, row, col, kind):
attr = [self.even, self.odd][row % 2]
attr.IncRef()
return attr
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Grid Table",
size=(640,480))
self.grid = wx.grid.Grid(self)
print "creo la tabla"
self.table = TestTable()
print "tabla creada"
print " antes de linkear la tabla y la grilla"
self.grid.SetTable(self.table, True)
print "despues de linkear la tabla y la grilla"
self.cmdBuscar = wx.Button( self, wx.ID_ANY, u"probar
GetNumberRows", wx.DefaultPosition, wx.Size( 50,60 ), wx.BU_EXACTFIT )
self.cmdBuscar.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), 70,
90, 92, False, wx.EmptyString ) )
self.cmdBuscar.Bind( wx.EVT_BUTTON, self.cmdBuscar_OnButtonClick )
def cmdBuscar_OnButtonClick(self, event):
print self.grid.GetNumberRows()
print self.grid.GetNumberCols()
print self.grid.GetCellValue(1,1)
self.grid.SetCellValue(1,1,"otro valor")
app = wx.PySimpleApp()
frame = TestFrame()
frame.Show()
app.MainLoop()
---
El software de antivirus Avast ha analizado este correo electrónico en busca de virus.
https://www.avast.com/antivirus
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170418/665a6e58/attachment-0001.html>
Más información sobre la lista de distribución pyar