HOWTO · Tkinter
Wie man Argumente an den Tkinter-Button-Befehl übergibt
Wie man Argumente an den Tkinter-Knopfbefehl übergibt
Auf dieser Seite
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)
)