Wie man Argumente an den Tkinter-Button-Befehl übergibt
-
Argumente an
command
in Tkinter Button mitpartials
übergeben -
Argumente an
command
in Tkinter Button mit derlambda
Funktion übergeben
![Wie man Argumente an den Tkinter-Button-Befehl übergibt](/img/Python-Tkinter/feature-image---How-to-pass-arguments-to-Tkinter-Button-command.webp)
Die Option command
im Tkinter Button
Widget wird ausgelöst, wenn der Benutzer den Button drückt. In einigen Szenarien müssen Sie Argumente an die angehängte Befehlsfunktion übergeben, aber Sie können die Argumente nicht einfach wie unten beschrieben übergeben,
button = tk.Button(app, text="Press Me", command=action(args))
Wir werden zwei Möglichkeiten vorstellen, die Argumente an die Befehlsfunktion zu übergeben.
Argumente an command
in Tkinter Button mit partials
übergeben
Wie in Python Tkinter tutorial demonstriert, haben Sie die Möglichkeit, das partial
Objekt aus dem functools
Modul zu verwenden.
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)
gibt ein aufrufbares Objekt zurück, das sich beim Aufruf wie eine func
verhält.
Argumente an command
in Tkinter Button mit der lambda
Funktion übergeben
Sie könnten auch den Python-Operator oder die Funktion lambda
verwenden, um eine temporäre, einmalige einfache Funktion zu erstellen, die aufgerufen wird, wenn Button
angeklickt wird.
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()
Die Syntax der lambda
Funktion ist
lambda: argument_list: expression
Sie brauchen in diesem Beispiel keine Argumente, deshalb könnten Sie die Argumentliste leer lassen und nur den Ausdruck schreiben.
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