Tkinter 버튼에 여러 명령을 바인딩하는 방법

  1. Tkinter Button 에 여러 명령 바인딩
  2.  함수를 하나의 단일 함수로 결합

이 자습서에서는 여러 명령을 Tkinter button에 바인딩하는 방법을 보여줍니다. 버튼을 클릭하면 여러 명령이 실행됩니다.

Tkinter Button 에 여러 명령 바인딩

Tkinter 버튼에는 하나의 command 속성 만 있으므로 여러 명령 또는 함수를이 command 에 바인딩 된 하나의 함수로 래핑해야합니다.

lambda를 사용하여 여러 명령을 다음과 같이 결합 할 수 있습니다.

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

lambda 함수는 funcA,funcBfuncC 를 하나씩 실행합니다.

labmda 는 여러 명령을 바인딩합니다

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 가 여러 명령을 버튼에 바인딩

 함수를 하나의 단일 함수로 결합

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

위 함수는 함수 내부의 함수를 정의한 다음 함수 객체를 반환합니다.

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

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

관련 문장 - Tkinter Button

  • Tkinter 버튼 텍스트를 업데이트하는 방법
  • Tkinter 버튼 명령에 인수를 전달하는 방법