[pyar] Problema con una wxgrid

Javier Haramina jharamina en gmail.com
Lun Mayo 1 22:05:45 ART 2017


Gracias Leandro, de todas formas el problema no es con las base de datos, sino con los override de los métodos de la clase Table Base. 

 

 

De: pyar [mailto:pyar-bounces en python.org.ar] En nombre de Leandro Diker
Enviado el: lunes, 01 de mayo de 2017 19:03
Para: Python Argentina
Asunto: Re: [pyar] Problema con una wxgrid

 

Estimado, como está empezando a trabajar con base de datos le aconsejo utilizar Sqlite, hay aplicativos que lo ayudaran a crear dicho archivo o puede generarla directamente con codigo desde python, tengo mucho codigo sobre wxpython, aunque lo mejor para aprender es instalar wxformbuilder, aunque éste genera codigo para wxpython de python2.7, por lo que de utilizar python3.6 tendra que instalar la version phoenix. Actualmente trabajo con wxpython (phoenix) y entorno a base de datos tengo algo hecho en sqlite y otro tanto es postgresql. Preparo algo de codigo y te lo envio. Saludos.

 

El 20 de abril de 2017, 21:04, German Jimenez <germanjimenez84 en gmail.com> escribió:

Esos métodos se ejecutan pero solo se captura el int que devuelve o -1 en otro caso, y es por la clase c++ que esta en la base de wxwidgets. Fijate acá  https://wiki.wxpython.org/OverridingMethods 

 

El 18 de abril de 2017, 22:43, Javier Haramina <jharamina en gmail.com> escribió:

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() 

 


 <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> 

Libre de virus.  <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> www.avast.com 

 

_______________________________________________
pyar mailing list pyar en python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar

 


_______________________________________________
pyar mailing list pyar en python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar

 



---
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/20170501/401aeab9/attachment-0001.html>


Más información sobre la lista de distribución pyar