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 command
opção à função ou método. Isso é chamado de ligação de comando no Tkinter .
Para criar um botão, você usa o ttk.Button
construtor 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
command
uma função de retorno de chamada que será chamada automaticamente quando o botão for clicado.
Retorno de chamada de comando
A command
opçã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 à command
opçã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 normal
estado, 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 disabled
estado. Nesse disabled
estado, 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 Exit
botã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(False, False)
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 Exit
botã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, assets
pasta:
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
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.PhotoImage
classe que faz referência ao arquivo de imagem'./assets/download.png'
. - Em segundo lugar, crie a
ttk.Button
opção cuja imagem está atribuída à imagem. - Terceiro, atribua uma função à
command
opção. Ao clicar no botão, ele chamará adownload_clicked
funçã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 compound
opçã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 à
command
opção de responder ao evento de clique do botão. - Atribua
tk.PhotoImage()
àimage
propriedade para exibir uma imagem no botão. - Use a
compound
opção se quiser exibir texto e imagem em um botão.