[pyar] Fondo de pantalla usando wxpython.

Mariano Reingart reingart en gmail.com
Mar Mar 26 16:19:28 ART 2013


2013/3/26 Carlos Miguel FARIAS <carlosmiguelfarias en gmail.com>

> El código que uso...
>
> en el __init__ del frame
>     super(tFormulario, self).__init__(
>             oPadre, id=idPantalla, title=cTitulo, pos=qPosicion,
>             size=qTamanio, style=qEstilo, name=cNombre)
>             self.SetSizeHintsSz(qTamanioMinimo, qTamanioMaximo)
>             self.SetFont(wx.Font(wx.NORMAL_
>                 FONT.GetPointSize(),
>                 wx.FONTFAMILY_DEFAULT,
>                 wx.FONTSTYLE_NORMAL,
>                 wx.FONTWEIGHT_NORMAL,
>                 False, "Comic Sans MS"))
>
>             if bMaximizado:
>                 self.Maximize()
>             else:
>                 self.SetSize(qTamanio)
>             self.Centre(wx.BOTH)
>
>             self.szrFondo = wx.BoxSizer(wx.VERTICAL)
>
>             if cFondo:
>                 self.SetBackgroundStyle( wx.BG_STYLE_CUSTOM)
>                 self.bitMapFondo = wx.Bitmap(cFondo, wx.BITMAP_TYPE_ANY)
>                 imgFondo = wx.StaticBitmap(self, wx.ID_ANY,
>                     self.bitMapFondo, (0, 0), wx.DefaultSize, 0)
>                 self.szrFondo.Add(imgFondo, wx.EXPAND, wx.ALL, 5)
>                 qTamanio = imgFondo.GetSize()
>
> El fondo se ve bien, en el metodo resize del form tengo:
>
>     def AlRedimensionar(self, oEvento):
>         qT = self.GetSize()
>         print qT
>         print wx.DefaultSize
>         print wx.DefaultPosition
>         if self.bitMapFondo:
>             imgFondo = wx.StaticBitmap(self,
>                     wx.ID_ANY, self.EscalarBitMap(self.bitMapFondo,
>                     qT), wx.DefaultPosition, qT, 0)
>         self.Refresh()
>
> Y funciona bien.
>



> Luego agrego barra de estado y de herramientas, y no se ven.
> Anulo la asignación de imagen y se ve.
>

Calculo que no se ve porque estas creando un nuevo StaticBitmap en el
evento "AlRedimensionar", y seguramente se solapa frente al resto de los
controles.
StaticBitmap es más para mostrar un campo imagen "estático".
Para hacerlo más dinámico creo que te conviene usar un Image, que es más
liviano, y dibujarlo en los métodos de pintado (EVT_PAINT,
EVT_ERASE_BACKGROUND o simiar).

Podes ver algunas soluciones en:

http://www.blog.pythonlibrary.org/2010/03/18/wxpython-putting-a-background-image-on-a-panel/

http://wxpython-users.1045709.n5.nabble.com/Adding-a-tileable-background-image-to-a-frame-td2301394.html


> Me parece que tengo un error en el tamaño del sizer, o el que le estoy
> dando a la imagen, pero en fin, no doy pie con bola, por eso pregunto.
>

No veo ningún sizer en ese código (y creo que tampoco te ayudaría con este
tema, ya que justamente los sizers se usan para distribuir y no recuerdo
ninguno que se pueda solapar algo de fondo)....

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130326/0c3abe00/attachment.html>


More information about the pyar mailing list