Как передать Аргументы команде кнопки Tkinter
-
Передать аргументы в
command
в Tkinter Button сpartials
-
Передача аргументов в
command
в Tkinter Button с помощью функцииlambda

Опция command
в виджете Tkinter Button
срабатывает при нажатии пользователем кнопки. В некоторых сценариях необходимо передавать аргументы в прикрепленную командную функцию, но нельзя просто передать аргументы, как показано ниже,
button = tk.Button(app, text="Press Me", command=action(args))
Мы представим два способа передачи аргументов в командную функцию.
Передать аргументы в command
в Tkinter Button с partials
Как показано в Python Tkinter tutorial, у вас есть возможность использовать объект partial
из модуля 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))
partial(change_label_numer, 2)
возвращает вызываемый объект, который при вызове ведет себя как func
.
Передача аргументов в command
в Tkinter Button с помощью функции lambda
Вы также можете использовать оператор или функцию Python lambda
для создания временной, одноразовой простой функции, которая будет вызываться при нажатии кнопки Button
.
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()
Синтаксис функции lambda
заключается в следующем.
lambda: argument_list: expression
В этом примере аргументы не нужны, поэтому можно оставить список аргументов пустым и только записать выражение.
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Сопутствующая статья - Tkinter Button
- Как закрыть окно Tkinterа с помощью кнопки
- Как изменить состояние кнопки Tkinter
- Как привязать несколько команд к кнопке Tkinter
- Как создать новое окно, нажав кнопку в Tkinter
- Как изменить размер кнопки Tkinter