Eventos com Botão - < Enter > e < Leave >

Neste tutorial de Python, vamos aprender como usar dois eventos associados aos botões: o <Enter> e o <Leave>, e vamos ver como tratar events com mouse do usuário.
  • Acesse esse conteúdo pelo computador, celular, tablet etc e estude pelo PDF por onde quiser: Apostila de Python

Eventos <Enter> e <Leave> de botões


Agora que já aprendemos a trabalhar com o widget Button, vamos aprender a usar eventos com botões.

Vamos usar dois eventos:
  • <Enter> : Quando você passa o mouse por cima do botão
  • <Leave>: Quando você tira o mouse de cima do botão

Vamos fazer dois binds:
  1. Com o evento <Enter>, que chama o método passou_por_cima
  2. Com o evento <Leave>, que chama o método saiu_de_cima
Ou seja, quando você passa o mouse por cima do botão, um event handler é acionado.
Quando você tira o mouse de cima, outro event handler é acionado.

Não devemos esquecer de passar o objeto event para estes métodos de tratamento, é lá que vamos usar o método widget.config() para alterar o relevo do botão.

Esses métodos de tratamento de evento vão simplesmente mudar a textura do botão.
Quando passa o mouse por cima, temos o estilo GROOVE (de entrar, simulando o botão entrando.
Quando tiramos o mouse de cima, acionamos o estilo RAISED (de levantar o botão que tava pra dentro).

E quando apertamos o botão, o método apertou é acionado.

Veja como fica nosso código:


from tkinter import *
from tkinter import messagebox

class ButtonEvent( Frame ):
 def __init__( self ):
  Frame.__init__( self )
  self.pack()
  self.master.title( "Botão" )
  self.master.geometry("120x40")
  
  # Criando botão
  self.botao = Button( self, text = "Clique aqui", command = self.apertou )
  self.botao.bind( "<Enter>", self.passou_por_cima )
  self.botao.bind( "<Leave>", self.saiu_de_cima)
  self.botao.pack( side = LEFT, padx = 5, pady = 5 )
  
  mainloop()
  
 def apertou( self ):
  messagebox.showinfo( "Messagem", "Você apertou o botão" )
 def passou_por_cima( self, event ):
  event.widget.config( relief = GROOVE )
 def saiu_de_cima( self, event ):
  event.widget.config( relief = RAISED )
  
# Chamando a classe
ButtonEvent()


E o resultado:
Button event handler

Exercício de GUI

Crie um programa em GUI que exibe 5 botões.
Quando for criar os objetos do tipo Button, passe o parâmetro relief=ESTILO, onde ESTILO pode ser:

FLAT
RAISED
SUNKEN
GROOVE
RIDGE


E veja a diferença no estilo de botões.
Alguém pode dar um resuminho nos comentários, explicando como fica cada estilo ?

Nenhum comentário:

Postar um comentário