# vamos importar a biblioteca wxPython
import wx
# classe que representa a janela da aplicação wxPython
class Janela(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1,
"Imagem de fundo na aplicação wxPython", size=(800, 530))
# Cria um painel
painel = Painel(self)
# criamos um BoxSizer
vbox = wx.BoxSizer(wx.HORIZONTAL)
# vamos criar três botões e adicioná-los ao BoxSizer
btn1 = wx.Button(painel, label='Produtos', size=(90, 30))
btn2 = wx.Button(painel, label='Clientes', size=(90, 30))
btn3 = wx.Button(painel, label='Fornecedores', size=(90, 30))
vbox.Add(btn1, flag=wx.LEFT|wx.TOP, border=10)
vbox.Add(btn2, flag=wx.LEFT|wx.TOP, border=10)
vbox.Add(btn3, flag=wx.LEFT|wx.TOP, border=10)
# colocamos o sizer no painel
painel.SetSizer(vbox)
# classe Painel personalizada que servirá para adicionarmos
# a imagem de fundo na aplicação wxPython
class Painel(wx.Panel):
# método construtor
def __init__(self, parent):
wx.Panel.__init__(self, parent=parent)
self.frame = parent
# vamos criar uma função personalizada que intercepta o
# evento wx.EVT_ERASE_BACKGROUND
self.Bind(wx.EVT_ERASE_BACKGROUND, self.on_erase_background)
# função que será chamada todas as vezes que o evento
# wx.EVT_ERASE_BACKGROUND for disparado
def on_erase_background(self, event):
# obtemos o contexto de desenho do evento
dc = event.GetDC()
# não foi possível obter o contexto de desenho?
if not dc:
dc = wx.ClientDC(self)
rect = self.GetUpdateRegion().GetBox()
dc.SetClippingRect(rect)
dc.Clear()
# carregamos a imagem de fundo
bmp = wx.Bitmap("imagem_fundo.jpg")
# e a desenhamos na tela
dc.DrawBitmap(bmp, 0, 0)
if __name__ == "__main__":
app = wx.App()
janela = Janela()
janela.Show(True)
app.MainLoop()