Tkinter Tutorial - Botão

Jinku Hu 30 janeiro 2023
  1. Botão Tkinter opção default
  2. Botão Tkinter Comando Callback
Tkinter Tutorial - Botão

O Tkinter button widget é bastante semelhante ao Tkinter Label widget. Ele tem quase as mesmas opções que as da etiqueta, exceto que tem uma opção extra default. Vamos dar detalhes deste default depois de um exemplo básico de botão.

Você poderia gerar dois botões mais simples utilizando os códigos demo abaixo.

from sys import version_info

if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk

app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()

A janela com dois botões adjacentes um ao outro mostra depois de executar os códigos.

Tkinter Tutorial_Basic Label

Botão Tkinter opção default

A opção default no botão diz que o botão é o botão padrão na GUI, por exemplo, aquele que é invocado automaticamente quando o usuário pressiona a tecla Enter ou Return.

Botão Tkinter Comando Callback

A opção command invoca a função de retorno de chamada quando o botão é pressionado.

role=“alert”>O estado do botão deve estar ativo quando sua opção de comando é ativada, caso contrário, não há chamada de retorno (callback) invocada.

from sys import version_info

if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk


app = tk.Tk()
labelExample = tk.Button(app, text="0")


def change_label_number():
    counter = int(str(labelExample["text"]))
    counter += 1
    labelExample.config(text=str(counter))


buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)

buttonExample.pack()
labelExample.pack()
app.mainloop()

Ele cria um botão e um widget de etiqueta na janela principal. O número no texto da etiqueta é aumentado em 1 cada vez que o botão é clicado.

Tkinter Tutorial_Button Comando Callback

def change_label_number():
    counter = int(str(labelExample["text"]))
    counter += 1
    labelExample.config(text=str(counter))

O change_label_number é a função invocada quando o botão é clicado. Ele obtém o número da etiqueta e depois define a etiqueta aumentada em um.

buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)

Ele constrói a ligação entre o botão e sua função de callback.

Função de Callback com Argumentos do Botão de Comando do Tkinter

Você precisa de um objeto partial de functools se você precisar passar argumentos para as funções de retorno de chamada. Objetos partial são objetos com os argumentos posicionais args e argumentos de palavras-chave keywords.

Abaixo do código snippet demonstra como utilizar esta função parcial no comando do botão.

def change_label_number(num):
    counter = int(str(labelExample["text"]))
    counter += num
    labelExample.config(text=str(counter))


buttonExample = tk.Button(
    app, text="Increase", width=30, command=partial(change_label_number, 2)
)
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook