HOWTO · Tkinter
Wie man mehrere Befehle an die Tkinter-Taste bindet
Dieses Tutorial führt ein, wie man mehrere Befehle an die Tkinter-Taste bindet. Es werden mehrere Befehle ausgeführt, wenn die Taste gedrückt wird.
Auf dieser Seite
In diesem Tutorial wird gezeigt, wie man mehrere Befehle an einen Tkinter-Button bindet. Mehrere Befehle werden ausgeführt, nachdem der Button angeklickt wurde.
Mehrere Befehle an Tkinter Button binden
Der Tkinter-Knopf hat nur eine command-Eigenschaft, so dass mehrere Befehle oder Funktionen zu einer Funktion umgebrochen werden sollten, die an diesen command gebunden ist.
Wir könnten lambda benutzen, um mehrere Befehle zu kombinieren als,
def command():
return [funcA(), funcB(), funcC()]
Diese lambda-Funktion führt nacheinander die Funktionen funcA, funcB und funcC aus.
Beispiel für die labmda Bindung mehrerer Befehle
try:
import Tkinter as tk
except:
import tkinter as tk
class Test:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("200x100")
self.button = tk.Button(
self.root,
text="Click Me",
command=lambda: [self.funcA(), self.funcB(), self.funcC()],
)
self.button.pack()
self.labelA = tk.Label(self.root, text="A")
self.labelB = tk.Label(self.root, text="B")
self.labelC = tk.Label(self.root, text="C")
self.labelA.pack()
self.labelB.pack()
self.labelC.pack()
self.root.mainloop()
def funcA(self):
self.labelA["text"] = "A responds"
def funcB(self):
self.labelB["text"] = "B responds"
def funcC(self):
self.labelC["text"] = "C responds"
app = Test()
Funktionen zu einer einzigen Funktion zusammenfassen
def combineFunc(self, *funcs):
def combinedFunc(*args, **kwargs):
for f in funcs:
f(*args, **kwargs)
return combinedFunc
Obige Funktion definiert eine Funktion innerhalb einer Funktion und gibt dann das Funktionsobjekt zurück.
for f in funcs:
f(*args, **kwargs)
Sie führt alle Funktionen aus, die in der Klammer von combineFunc angegeben sind.
try:
import Tkinter as tk
except:
import tkinter as tk
class Test:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("200x100")
self.button = tk.Button(
self.root,
text="Click Me",
command=self.combineFunc(self.funcA, self.funcB, self.funcC),
)
self.button.pack()
self.labelA = tk.Label(self.root, text="A")
self.labelB = tk.Label(self.root, text="B")
self.labelC = tk.Label(self.root, text="C")
self.labelA.pack()
self.labelB.pack()
self.labelC.pack()
self.root.mainloop()
def combineFunc(self, *funcs):
def combinedFunc(*args, **kwargs):
for f in funcs:
f(*args, **kwargs)
return combinedFunc
def funcA(self):
self.labelA["text"] = "A responds"
def funcB(self):
self.labelB["text"] = "B responds"
def funcC(self):
self.labelC["text"] = "C responds"
app = Test()