[pyar] Problema con una wxgrid

Leandro Diker leandrodiker en gmail.com
Lun Mayo 1 19:03:23 ART 2017


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. www.avast.com
>> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>> <#m_-2575568813047527802_m_-5659725725377692992_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>
>> _______________________________________________
>> 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170501/d8046ef3/attachment-0001.html>


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