[Python-es] Agregar Label a un BoxSizer en wxPython

Leonel leonelhermetica en openmailbox.org
Jue Nov 20 00:35:15 CET 2014


El 18/11/14 a las 06:28, kausdiv escibió:
> Buenas. !
>
> Tengo un problema: No se crear componente Label en tiempo de ejecución 
> dentro de un BoxSizer creado al respecto. Expongo lo que hago:
>
> He creado un formulario con WxFormBuilder. Como sabéis este crea una 
> clase. Por ejemplo "atc_windows". He dejado Boxsizer para que contenga 
> la etiquetas llamado "_etiquetas".
>
> A partir de aquí yo instancio la case "atc_windows" en otra llamada 
> "Pantalla" y sobreescribo los procedimintos" que me interesan por 
> ejemplo los de los botones:
>
> --------------
> class Pantalla(atc_windows):
>
>      def __init__( self, parent ):
>
>             atc_windows.__init__(self, parent)
> ------------- etc-------------
>
>
>
> Pues bien en un procecimiento de un botón quiero crear varias 
> etiquetas DENTRO del boxsizer que dejé creado. Uso el siguiente código:
> --------------------
> self.x1 = wx.StaticText( self.m_panel2, wx.ID_ANY, u"x1", 
> wx.DefaultPosition, wx.DefaultSize, 0 )
>
> self._etiquetas.AddChild(self.x1)
>
> ------------------
>
>
> El error que devuelve es:
> self._etiquetas.AddChild(self.x1)
> AttributeError: 'Pantalla' object has no attribute '_etiquetas'
>
>
> ¿ alguien podría indicarme cómo hacerlo ? He buscado en internet y no 
> he localizado nada que me ayude.
>
> Saludos.
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

Hola! Debes mostrar siempre un poco mas de codigo. En cuanto al problema 
he probado esto y me funciona:

# El error que te devuelve es que no pusiste "self." cuando definiste el 
BoxSizer "_etiquetas"
# Por como definis el staticText usas wxFormBuilder, asique cuando creas 
el BoxSizer ponele
# el nombre con el "self". Cambialo a esto:     self._etiquetas

# Funcion del evento
def onClick(self, evt):
     self.x1 = wx.StaticText(self.m_panel2, wx.ID_ANY, u"x1", 
wx.DefaultPosition, wx.DefaultSize, 0)
     self._etiquetas.Add(self.x1)
     self.Layout()

No te olvides del Layout! y si no te funciona pone mas codigo. Abrazo!


Más información sobre la lista de distribución Python-es