Hoe meerdere opdrachten aan de Tkinter-knop te binden

  1. Bind meerdere opdrachten aan de Tkinter-knop
  2. Combineer functies tot één enkele functie

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

Gerelateerde Artikelen - Tkinter Button

  • Argumenten doorgeven aan Tkinter Button Command
  • Een Tkinter-venster sluiten met een knop
  • Hoe de status van de Tkinter-knop te wijzigen
  • Hoe een nieuw venster te maken door op een knop in Tkinter te klikken