[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