Botão Tkinter

Resumo : neste tutorial, você aprenderá sobre o widget Tkinter Button e como usá-lo para criar vários tipos de botões.

Introdução ao widget do botão Tkinter

Os widgets de botão representam um item clicável nos aplicativos. Normalmente, você usa texto ou imagem para exibir a ação que será executada quando clicada.

Os botões podem exibir texto em uma única fonte. No entanto, o texto pode abranger várias linhas. Além disso, você pode sublinhar um dos caracteres para marcar um atalho de teclado.

Para invocar uma função ou método de uma classe automaticamente quando o botão é clicado, você atribui sua commandopção à função ou método. Isso é chamado de ligação de comando no Tkinter .

Para criar um botão, você usa o ttk.Buttonconstrutor da seguinte maneira:

button = ttk.Button(master, **option)Linguagem de código:  Python  ( python )

Um botão tem muitas opções. Porém, os típicos são assim:

button = ttk.Button(master, text, command)Linguagem de código:  Python  ( python )

Nesta sintaxe:

  • Este masteré o widget pai no qual você coloca o botão.
  • O texté o rótulo do botão.
  • Especifica commanduma função de retorno de chamada que será chamada automaticamente quando o botão for clicado.

Retorno de chamada de comando

A commandopção associa a ação do botão a uma função ou método de uma classe. Quando você clica ou pressiona o botão, ele invoca automaticamente uma função de retorno de chamada.

Para atribuir um retorno de chamada à commandopção, você pode usar uma expressão lambda:

def callback():
    # do something


ttk.Button(
   root, 
   text="Demo Button", 
   command=callback
)Linguagem de código:  Python  ( python )

Se a função contiver uma expressão, use uma expressão lambda:

ttk.Button(
   root, 
   text="Demo Button", 
   command=lambda_expression
)Linguagem de código:  Python  ( python )

Estados dos botões

O estado padrão de um botão é normal. Nesse normalestado, o botão responderá aos eventos do mouse e aos pressionamentos do teclado invocando a função de retorno de chamada atribuída à sua opção de comando.

O botão também pode ter o disabledestado. Nesse disabledestado, um botão fica acinzentado e não responde aos eventos do mouse e aos pressionamentos do teclado.

Para controlar o estado de um botão, você usa o state()método:

# set the disabled flag
button.state(['disabled'])

# remove the disabled flag
button.state(['!disabled'])Linguagem de código:  Python  ( python )

Exemplos de botões Tkinter

Vejamos alguns exemplos de uso de widgets de botão.

1) Exemplo simples de botão Tkinter

O programa a seguir mostra como exibir um Exitbotão. Ao clicar nele, o programa é encerrado.

import tkinter as tk
from tkinter import ttk

# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(FalseFalse)
root.title('Button Demo')

# exit button
exit_button = ttk.Button(
    root,
    text='Exit',
    command=lambda: root.quit()
)

exit_button.pack(
    ipadx=5,
    ipady=5,
    expand=True
)

root.mainloop()Linguagem de código:  Python  ( python )

Saída:

Como funciona.

O seguinte cria o Exitbotão:

exit_button = ttk.Button(
    root,
    text='Exit',
    command=lambda: root.quit()
)Linguagem de código:  Python  ( python )

O comando do botão é atribuído a uma expressão lambda que fecha a janela raiz.

2) Exemplo de botão de imagem Tkinter

O programa a seguir mostra como exibir um botão de imagem. Para praticar este exemplo, você precisa primeiro baixar a seguinte imagem:

Basta clicar com o botão direito e salvá-lo em uma pasta que possa ser acessada pelo seguinte programa, por exemplo, assetspasta:

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo


# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(FalseFalse)
root.title('Image Button Demo')


# download button
def download_clicked():
    showinfo(
        title='Information',
        message='Download button clicked!'
    )


download_icon = tk.PhotoImage(file='./assets/download.png')
download_button = ttk.Button(
    root,
    image=download_icon,
    command=download_clicked
)

download_button.pack(
    ipadx=5,
    ipady=5,
    expand=True
)


root.mainloop()Linguagem de código:  Python  ( python )

Saída:

Como funciona.

  • Primeiro, crie uma nova instância da tk.PhotoImageclasse que faz referência ao arquivo de imagem './assets/download.png'.
  • Em segundo lugar, crie a ttk.Buttonopção cuja imagem está atribuída à imagem.
  • Terceiro, atribua uma função à commandopção. Ao clicar no botão, ele chamará a download_clickedfunção que exibe uma caixa de mensagem.

3) Exibindo um botão de imagem

Para exibir texto e imagem em um botão, você precisa usar a compoundopção. Caso contrário, o botão exibirá apenas o texto, não a imagem.

Veja a seguir como exibir texto e imagem em um botão:

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showinfo


# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Image Button Demo')


# download button handler
def download_clicked():
    showinfo(
        title='Information',
        message='Download button clicked!'
    )


download_icon = tk.PhotoImage(file='./assets/download.png')

download_button = ttk.Button(
    root,
    image=download_icon,
    text='Download',
    compound=tk.LEFT,
    command=download_clicked
)

download_button.pack(
    ipadx=5,
    ipady=5,
    expand=True
)


root.mainloop()
Linguagem de código:  Python  ( python )

Saída:

Resumo

  • Use a ttk.Button()classe para criar um botão.
  • Atribua uma expressão lambda ou uma função à commandopção de responder ao evento de clique do botão.
  • Atribua tk.PhotoImage()à imagepropriedade para exibir uma imagem no botão.
  • Use a compoundopção se quiser exibir texto e imagem em um botão.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *