[pyar] wxPython, segundo round

Sebastian Scheib stackpointerex en gmail.com
Mar Feb 7 08:40:33 ART 2012


Ahora le agregué un "self" al principio y empezó a tener algo de forma la
cosa, el problema es que ahora:

def OnPaint(self,e):
        self.dc=wx.PaintDC(self)
        DirectorioImagenes = os.getcwd()+"\images\g19x19.png"
        self.bitmap=wx.Bitmap(DirectorioImagenes)
        self.dc.DrawBitmap(self.bitmap,20,20)
        self.dc.SetBrush(wx.Brush('#A4A4A4'))
        self.dc.DrawRectangle(570,40,600,150)
        for i in range (1,19):
            for j in range (1,19):
                if(self.tablero.get_valor(i,j)!=0):
                    self.dc.DrawCircle(i*50,j*50,10)

Cuando aprieto un botón, una posicion de tablero cambia (por lo que en ahi
en algun punto el valor va a ser distinto de 0 por lo que va a dibujar el
círculo), pero debugeandoloveo que cuando lo encuentra, pasa el if, dibuja
el círculo, pero vuelve al if y no al for :(

El 6 de febrero de 2012 23:09, Ismael Bejarano <ismaelbej en gmail.com>escribió:

> Hola,
>
> El 6 de febrero de 2012 18:40, Sebastian Scheib <stackpointerex en gmail.com>escribió:
>
> Gracias por la ayuda hasta ahora. El siguiente paso que no logro sacar
>> como es es refrescar lo que está dibujado en la pantalla con el evento
>> EVT_PAINT.
>>
>> Por ejemplo, arranco y bindeo con OnPaint:
>>
>> self.Bind(wx.EVT_PAINT, self.OnPaint)
>>
>>
>> y en OnPaint:
>>
>>  def OnPaint(self,e):
>>         dc=wx.PaintDC(self)
>>         dc.DrawBitmap(self.bitmap,20,20)
>>         dc.SetBrush(wx.Brush('#A4A4A4'))
>>         dc.DrawRectangle(570,40,600,150)
>>         for i in range (1,20):
>>              for j in range (1,20):
>>                 if(self.tablero.get_valor(i,j)!=0):
>>                     dc.SetBrush(wx.Brush('#FFFFFF'))
>>                     print "Hola" *<---Esto lo puse para ver si pasaba
>> por acá, lo cual sucede.*
>>                     dc.DrawCircle(i*20,j*20,10)
>>
>> En el principio del programa me muestra el bitmap y el rectángulo que le
>> pido pero después empieza mi problema:
>>
>> En principio tablero en todos lados va a valer 0 por lo que no va a
>> dibujar círculos, pero en un momento voy a hacer que en algún lugar valga
>> distinto. La cosa es que entra de nuevo en OnPaint, me muestra el "Hola"
>> pero no me dibuja los círculos. Lo que en principio me hace pensar que de
>> alguna manera debería refrescar todo, pero no se como se hace :(
>>
>>
> El evento paint esta optimizado para solo redibujar las regiones que
> cambiaron. En wx podes forzar el redibujado completo de un control llamando
> a Refresh.
>
>
>> Gracias!
>>
>>
> Saludos,
> Ismael
>
>
> _______________________________________________
> 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/20120207/a55db3b0/attachment.html>


More information about the pyar mailing list