Wie man Argumente an den Tkinter-Button-Befehl übergibt
-
Argumente an
commandin Tkinter Button mitpartialsübergeben -
Argumente an
commandin Tkinter Button mit derlambdaFunktion übergeben
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