[pyar] wxPython, segundo round

Sebastian Scheib stackpointerex en gmail.com
Jue Feb 9 16:50:34 ART 2012


Muchísimas gracias.

Lo de los círculos en cualquier lado si, es que aun no hice la parte que
mapee esos círculos.

Lo demás, wow, ahora mismo me pongo a devorar todo eso que me pasaste,
estoy aprendiendo muchísimo, GRACIAS!!!!!!!!!!!!!!!!!!!!!!!

El 9 de febrero de 2012 16:48, Mariano Reingart <reingart en gmail.com>escribió:

> Algunos consejos:
>
> En vez de concatenar las rutas, usa os.path.join (es mas
> multiplataforma, sino en unix la barra invertida da error como
> separador de directorios)
>
> OnPaint es un evento que solo se llama para repintar la ventana al
> abrir, cambiar tamaño o al activarse, por lo que, para que te dibuje
> cuando vos queres, debes llamara a Refresh()
>
> De algunos ejemplos vi que te estaría faltando BeginDrawing y
> EndDrawing, pero aparentemente esta deprecado, habria que revisar bien
> este tema.
>
> Igualmente quizas te convendría usar doble buffering, puede ser más
> optimo para dibujar y refrescar la pantalla:
>
> http://wiki.wxpython.org/YetAnotherDrawingSample
>
> Fijate en el adjunto que te está poniendo los circulos en cualquier
> lado, quizas tengas algun tema con el cálculo de coordenadas.
> Hay librerias como wx.lib.ogl o float canvas que te abstraen y
> simplifican el tema de manejar objetos graficos, refrescar, calcular
> coordenadas, movimientos, etc.:
>
> http://wiki.wxpython.org/wxOGL
>
> http://wiki.wxpython.org/FloatCanvas
>
> Te adjunto tambien el prueba4.py ajustado.
>
> Sds
>
> Mariano Reingart
> http://www.sistemasagiles.com.ar
> http://reingart.blogspot.com
>
>
>
> 2012/2/9 Sebastian Scheib <stackpointerex en gmail.com>:
> > Tercer Round:
> >
> > def OnPaint(self,e):
> >         dc=wx.PaintDC(self)
> >         for x in range(1,19):
> >             for y in range(1,19):
> >                 if(self.tablero.get_valor(x,y)==1):
> >                     print self.tablero.get_valor(x,y)
> >                     dc.DrawCircle(x*50,y*50,10)
> >                 if(self.tablero.get_valor(x,y)==2):
> >                     print self.tablero.get_valor(x,y)
> >                     dc.DrawCircle(x,y,10)
> >         DirectorioImagenes = os.getcwd()+"\images\g19x19.png"
> >         bitmap=wx.Bitmap(DirectorioImagenes)
> >         dc.DrawBitmap(bitmap,20,20)
> >         dc.SetBrush(wx.Brush('#A4A4A4'))
> >         dc.DrawRectangle(570,40,600,150)
> >
> > En la primera pasada, todos los valores de tablero.get_valor van a ser 0,
> > pero apenas aprieto un botón esto cambia.
> >
> > El tema es que aprieto un botón que me cambia un valor de tablero y si
> bien
> > se que entra al bucle al detectar el valor 1 o 2(le agregué esos print
> por
> > ejemplo y los manda), no me dibuja el círculo (es como si no me
> refrescara
> > lo que le hago)
> >
> > Ahora se que el tema está después de que aprieto el botón porque si le
> saco
> > los if o si hago un if que cumpla antes de presionar el botón me muestra
> los
> > círculos.
> >
> > Disculpen que esté rompe con el tema pero estoy con muchas ganas de sacar
> > que es lo que me falta para que funcione XD.
> >
> > Saludos y gracias por la paciencia que me muestran.
> >
> > El 8 de febrero de 2012 18:24, Sebastian Scheib <
> stackpointerex en gmail.com>
> > escribió:
> >
> >> Sigo probando sin éxito, a veces si cambio el lugar donde hago el bind
> >> queda colgadísimo. Ahora estoy de nuevo en donde no me muestra nada. La
> cosa
> >> es que me vaya agarrando un archivo sgf (para los que saben jugar go
> saben
> >> de que hablo) y va leyendo jugada a jugada y poniendo un circulo en el
> >> tablero (por ahora no lo tengo bien el mapa pero quería que al menos me
> >> aparezca un circulo que haría de pieza).
> >>
> >> (Por ahora el script es muy burdo, es una primera aproximación, pero me
> >> gustaría que se hiciera un refresh con la situación del tablero cada
> vez que
> >> le doy al botón de avanzar)
> >>
> >> Les paso el archivo con el sgf con el que estoy probando y una imagen
> por
> >> si alguien tiene ganas de verlo.
> >>
> >> Muchas gracias!
> >>
> >>
> >> El 7 de febrero de 2012 10:40, Ismael Bejarano <ismaelbej en gmail.com>
> >> escribió:
> >>>
> >>> Hola,
> >>>
> >>> El feb 7, 2012 8:40 a.m., "Sebastian Scheib" <stackpointerex en gmail.com
> >
> >>> escribió:
> >>>
> >>>
> >>> >
> >>> > Ahora le agregué un "self" al principio y empezó a tener algo de
> forma
> >>> > la cosa, el problema es que ahora:
> >>> >
> >>>
> >>> Hacer el PaintDC parte del objeto no es correcto, el PaintDC solo es
> >>> válido dentro del evento PAINT.
> >>>
> >>> > 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 evento OnPaint parece estar bien, habría que ver el resto del
> programa
> >>> para ver donde esta el problema.
> >>>
> >>> 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
> >>
> >>
> >
> >
> > _______________________________________________
> > 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/20120209/e5b23dfc/attachment.html>


More information about the pyar mailing list