Como Passar Argumentos ao Comando do Botão Tkinter
-
Passar os argumentos para o
command
no Botão Tkinter compartials
-
Passe Argumentos para
command
no Botão Tkinter com a funçãolambda
A opção command
no Tkinter Button
é acionada quando o usuário pressiona o botão. Em alguns cenários, você precisa passar argumentos para a função de comando anexada, mas não poderia simplesmente passar os argumentos como abaixo,
button = tk.Button(app, text="Press Me", command=action(args))
Vamos introduzir duas maneiras de passar os argumentos para a função de comando.
Passar os argumentos para o command
no Botão Tkinter com partials
Como demonstrado em Python Tkinter tutorial, você tem a opção de utilizar o objeto partial
do módulo functools
.
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
from functools import partial
app = tk.Tk()
labelExample = tk.Button(app, text="0")
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)
)
buttonExample.pack()
labelExample.pack()
app.mainloop()
buttonExample = tk.Button(
app, text="Increase", width=30, command=partial(change_label_number, 2)
)
O partial(change_label_numer, 2)
retorna um objeto chamável que se comporta como um func
quando é chamado.
Passe Argumentos para command
no Botão Tkinter com a função lambda
Você também pode utilizar o operador ou função Python lambda
para criar uma função temporária e simples para ser chamada quando o Button
é clicado.
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(num):
counter = int(str(labelExample["text"]))
counter += num
labelExample.config(text=str(counter))
buttonExample = tk.Button(
app, text="Increase", width=30, command=lambda: change_label_number(2)
)
buttonExample.pack()
labelExample.pack()
app.mainloop()
The syntax of lambda
function is
lambda: argument_list: expression
Você não precisa de nenhum argumento neste exemplo, portanto, você poderia deixar a lista de argumentos vazia e apenas escrever a expressão.
buttonExample = tk.Button(
app, text="Increase", width=30, command=lambda: change_label_number(2)
)
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