[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