Hoe meerdere opdrachten aan de Tkinter-knop te binden

Jinku Hu 30 januari 2023 20 december 2019
  1. Bind meerdere opdrachten aan de Tkinter-knop
  2. Combineer functies tot één enkele functie
Hoe meerdere opdrachten aan de Tkinter-knop te binden

In deze tutorial laten we zien hoe u meerdere opdrachten kunt binden aan een Tkinter knop . Meerdere opdrachten worden uitgevoerd nadat op de knop is geklikt.

Bind meerdere opdrachten aan de Tkinter-knop

De Tkinter-knop heeft slechts één command eigenschap, zodat meerdere opdrachten of functies moeten worden samengevoegd tot één functie die hieraan is gebonden command.

We kunnen gebruiken lambda om meerdere opdrachten te combineren als,

command=lambda:[funcA(), funcB(), funcC()]

Deze lambda functie zal uitvoeren funcA , funcB en funcC een voor een.

labmda bind meerdere commando’s voorbeeld

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()

Tkinter bindt meerdere opdrachten aan de knop

Combineer functies tot één enkele functie

   def combineFunc(self, *funcs):
       def combinedFunc(*args, **kwargs):
            for f in funcs:
                f(*args, **kwargs)
       return combinedFunc

De bovenstaande functie definieert een functie binnen een functie en retourneert vervolgens het functieobject.

for f in funcs:
                f(*args, **kwargs)

Het voert alle functies uit die tussen haakjes van staan combineFunc.

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()
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Gerelateerde Artikelen - Tkinter Button