[eside-ghost] wxpython + wxogl para pintar una especie de mapa o
diagrama
Arkaitz
arkaitzj en gmail.com
Lun Oct 16 17:37:40 CEST 2006
Aupa,
Ando con wxpython y wxOGL, y aunque estoy empezando estoy mas perdido
que un pulpo en un garaje, porque no me aclaro demasiado con las
jerarquias entre contenedores y demas.
Ahora mismo consigo mostrar ShapeRectangles donde yo quiero antes de
lanzar el MainLoop, pero despues necesito meter nuevos y borrar
antiguos, pues se refresca cada x segundos, pues no acabo de ver a que
tengo que hacer show o showAll o algo de eso.
Estoy usando esto:
class AppFrame(wx.Frame):
def __init__(self):
room = Room()
wx.Frame.__init__( self,
None, -1, "Demo",
size=(room.getY(),room.getX()),
style=wx.DEFAULT_FRAME_STYLE )
sizer = wx.BoxSizer( wx.VERTICAL )
print "Room is "+str(room.getY())+","+str(room.getX())
# put stuff into sizer
self.shapeList= []
self.canvas = ogl.ShapeCanvas( self )
sizer.Add( self.canvas, 1, wx.GROW )
self.canvas.SetBackgroundColour( "LIGHT BLUE" ) #
self.diagram = ogl.Diagram()
self.canvas.SetDiagram( self.diagram )
self.diagram.SetCanvas( self.canvas )
# apply sizer
self.SetSizer(sizer)
self.SetAutoLayout(1)
self.Show(1)
def addUbiObject(self,name,X,Y):
shape = ogl.RectangleShape(100,25)
shape.SetY(X*modifier)
shape.SetX(Y*modifier)
shape.AddText(name)
self.shapeList.append(shape)
self.canvas.AddShape(shape)
shape.Show(True)
app = wx.PySimpleApp()
ogl.OGLInitialize()
frame = AppFrame()
reloader = Reloader(frame)
frame.addUbiObject("Prueba",4.5,6)
app.MainLoop()
reloader.abort()
app.Destroy()
El reloader este es un thread aparte que se encargaria de ir
refrescando,porque parece que una vez llamado el MainLoop la
aplicacion solo atiende a eventos.
Una vez lanzado el MainLoop hago addUbiObject() y tal pero no aparece
nada en la pantalla, y he intentado borrar con shape.Show(False) y
shape.RemoveFromCanvas(self.canvas) y alguna cosa mas, pero nada.
Alguien sabe algo de esto?
Un saludo
--
Arkaitz
Más información sobre la lista de distribución eside-ghost