Enviar um café pro programador

Botão em GUI: o widget Button

Neste tutorial de GUI em Python, vamos aprender a criar e usar um dos widgets mais importantes, o button, ou seja, vamos criar botões em nossos programas.

Leia nosso conteúdo sem precisar de internet: Apostila Python Progressivo

Widget de Botão: Button

O widget Button nada mais é que aquele velho e conhecido botão, nas janelas, que clicamos em cima e acontece alguma coisa.

Em programação gráfica em Python, o que ocorre por trás dos panos quando criamos um botão é a chamada de um método.

Ou seja, clicou em OK, então o código vai atrás de um determinado método ou função e executa ele. Já se clicar em Cancelar outro método ou função que será invocado.

Para criarmos um botão, usamos a classe Button, que recebe três parâmetros:

  1. A janela mestre (objeto do tipo Tk() )
  2. text: string com o texto que vai aparecer no botão (Ok, Cancelar, Sair...)
  3. command: nome do método ou função que vai ser chamado quando clicarmos no botão, mas sem os parêntesis

Exemplo de uso do Botão em Python

Vamos criar um botão que com o texto "Clique aqui", que quando cli.cado, chama o método hello_world(), que dentro dele exibe uma caixa de diálogo.

Veja como fica nosso código Python:

from tkinter import *
from tkinter import messagebox

class MinhaGUI:
 def __init__(self):
  # Criamos a janela principal
  self.janela_principal = Tk()
  
  # Criando o botão
  self.botao = Button(self.janela_principal, text='Clique aqui', command=self.hello_world)
  
  # Empacotando o botão na janela principal
  self.botao.pack()
  
  # Rodando
  mainloop()

  
 def hello_world(self):
  messagebox.showinfo('Adoro a Apostila Python Progressivo!')


gui = MinhaGUI()

E o resultado:
Button widget em Python

Ao clicar, aparece essa caixa de diálogo:

Apostila de Python grátis para download

O Botão sair: quit button

Se você clicar em "Clique aquI", aparece a caixa de diálogo.

Se clicar no "Ok" da caixa de mensagem, volta pra janela principal, que tem o "Clique aqui" e fica nisso, eternamente. Só acaba se clicar no x de fechar.


Mas o comum é ter um botão de fechar, cancelar, sair...que ao clicar nele, nossa aplicação se encerre.
Pois bem, todo objeto da classe Tk() tem um método chamado quit(), mas chamar ele que as janelas fecham ao clicar no botão.

Então, vamos criar mais um botão, o botao_sair, que ao ser clicado (command) chama o método quit() da janela principal, que fecha o programa.

Veja como fica nosso código:

from tkinter import *
from tkinter import messagebox

class MinhaGUI:
 def __init__(self):
  # Criamos a janela principal
  self.janela_principal = Tk()
  
  # Criando os botões
  self.botao = Button(self.janela_principal, text='Clique aqui', command=self.hello_world)
  self.botao_sair = Button(self.janela_principal, text='Sair', command=self.janela_principal.quit)
  
  # Empacotando os botões janela principal
  self.botao.pack()
  self.botao_sair.pack()
  
  # Rodando
  mainloop()

  
 def hello_world(self):
  messagebox.showinfo('Adoro a Apostila Python Progressivo!')


gui = MinhaGUI()

E o resultado:

Como fazer um botão

Experimente clicar em Sair e veja o que acontece!

9 comentários:

  1. Bom... não acontece nada quando aperta pra sair kk

    ResponderExcluir
    Respostas
    1. kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

      Excluir
    2. botao4 = Button(root, text='Sair',command=root.quit)

      Excluir
  2. from tkinter import *
    from tkinter import messagebox

    class MinhaGUI:
    def __init__(self):
    # Criamos a janela principal
    self.janela_principal = Tk()

    # Criando os botões
    self.botao = Button(self.janela_principal, text='Clique aqui', command=self.hello_world)

    def quit():
    self.janela_principal.destroy()


    self.botao_sair = Button(self.janela_principal, text='Sair', command=quit)

    # Empacotando os botões janela principal


    self.botao.pack()
    self.botao_sair.pack()

    # Rodando
    mainloop()


    def hello_world(self):
    messagebox.showinfo('Adoro a Apostila Python Progressivo!')


    gui = MinhaGUI()

    ResponderExcluir
  3. O codigo da erro quando acrescento: gui = MinhaGUI()
    O que devo fazer?

    ResponderExcluir
    Respostas
    1. Como faz pra colocar texto dentro da janela?

      Excluir
  4. Como faz pra colocar um texto dentro da caixa?

    ResponderExcluir
  5. como faz pra colocar um texto dentro da janela?

    ResponderExcluir