[wxpython-users] Background image for Main Window

Michael Moriarity datasmith at gmail.com
Tue Mar 25 07:59:27 PDT 2008


Hi Tony:

I normally put a panel on the frame, then in the panel's __init__() I read
the background image into a wx.Bitmap:

self.BgBitmap = wx.Bitmap(BgFilePath)

and bind a handler for the Erase Background event:

self.Bind(wx.EVT_ERASE_BACKGROUND, self._OnEraseBackground)

In the handler, just blit the bitmap onto the panel.

    def _OnEraseBackground(self, Event):
        # Get an Erase DC.
        EraseDC = Event.GetDC()

        # If it is null, use a Client DC instead.
        if EraseDC is None:
            EraseDC = wx.ClientDC(self)

        # Blit the Background Bitmap over the Window.
        MemoryDC = wx.MemoryDC()
        MemoryDC.SelectObject(self.BgBitmap)
        EraseDC.Blit(0, 0, self.BgBitmap.GetWidth(),
self.BgBitmap.GetHeight(), MemoryDC, 0, 0)

        # Select out the Background Bitmap.
        MemoryDC.SelectObject(wx.NullBitmap)


On Mon, Mar 24, 2008 at 9:01 PM, Tony Cappellini <cappy2112 at gmail.com> wrote:
> I'd like to display a background image for the main window, in my next program.
>  (The image will be faded to make it less visually disturbing using a
>  photo editing program.)
>
>  I'm looking through the demo programs under the images section trying
>  to find a suitable example.
>  If I make a Static Bitmap as large as the main window, will I be able
>  to put other widgets on top of the bitmap (as if it were the main
>  Window),
>  and be able to respond to the events form those widgets?
>
>  Or- dos someone have a better suggestion on how to do this?
>  _______________________________________________
>  wxpython-users mailing list
>  wxpython-users at lists.wxwidgets.org
>  http://lists.wxwidgets.org/mailman/listinfo/wxpython-users
>



-- 
Best Regards,
Michael Moriarity


More information about the wxpython-users mailing list