Você está aqui: Python ::: wxPython ::: Imagens e Fotos |
Como adicionar uma imagem de fundo em janelas e formulários do wxPython usando uma classe wx.Panel personalizadaQuantidade de visualizações: 21 vezes |
Nesta dica mostrarei como podemos inserir uma imagem de fundo em janelas, diálogos e formulários do wxPython. Para isso criaremos um painel personalizado a partir da classe wx.Panel. No nosso painel personalizado nós faremos uma interceptação do evento wx.EVT_ERASE_BACKGROUND para chamar uma função que carrega a imagem de fundo desejada como um objeto wx.Bitmap e a desenha no fundo do painel usando a função DrawBitmap do contexto de desenho. Veja o código wxPython completo para o exemplo: # 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() |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
Android Java - Como detectar um clique em um botão do Android usando o evento onClick no XML de layout |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |