Tkinter 명령 바인딩

2024. 2. 17. 18:13GUI/tkinter

요약 : 이 튜토리얼에서는 콜백을 위젯의 이벤트와 연관시키는 Tkinter 명령 바인딩에 대해 배우게 됩니다.

Tkinter 명령 바인딩 소개

애플리케이션을 더욱 대화형으로 만들려면 위젯이 다음과 같은 이벤트에 응답해야 합니다.

  • 마우스 클릭
  • 키 누르기

이를 위해서는 특정 이벤트에 콜백 함수를 할당해야 합니다. 이벤트가 발생하면 이벤트를 처리하기 위해 콜백이 자동으로 호출됩니다.

Tkinter에서 일부 위젯을 사용하면 명령 바인딩을 사용하여 콜백 함수를 이벤트와 연결할 수 있습니다.

위젯의 명령 옵션에 함수 이름을 지정하여 위젯에서 이벤트가 발생하면 해당 함수가 자동으로 호출되도록 할 수 있다는 뜻입니다.

명령 바인딩을 사용하려면 다음 단계를 따르세요.

  • 먼저 함수를 콜백으로 정의합니다.
  • 그런 다음 위젯의 command 옵션 에 함수 이름을 지정합니다 .

예를 들어 다음은 button_clicked()를 호출하는 함수를 정의합니다.

In [ ]:
def button_clicked():
    print('Button clicked')

그런 다음 함수를 버튼 위젯의 command 옵션과 연결할 수 있습니다.

In [ ]:
!sudo apt-get install python3-tk
In [ ]:
from Tkinter import *
from ttk import *
In [ ]:
ttk.Button(root, text='Click Me',command=button_clicked)

command 옵션 내에서 괄호() 없이 콜백을 전달한다는 점에 유의하세요. 그렇지 않으면 프로그램이 실행되자마자 콜백이 호출됩니다.

다음 프로그램은 button_clicked 콜백 함수를 Button 위젯과 연결하는 방법을 보여줍니다.

In [ ]:
import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def button_clicked():
    print('Button clicked')


button = ttk.Button(root, text='Click Me', command=button_clicked)
button.pack()

root.mainloop()

Tkinter 버튼 명령 인수

콜백 함수에 인수를 전달하려면 람다 표현식을 사용할 수 있습니다 .

먼저 args 인수를 받아들이는 함수를 정의합니다.

def callback_function(args):
     # do something

그런 다음 람다 표현식을 정의하고 이를 버튼 위젯의 command 인수에 할당합니다. 람다 표현식 내에서 콜백 함수를 호출합니다.

ttk.Button(
     root,
     text='Button',
     command=lambda: callback(args)
)

다음 프로그램은 버튼 명령과 관련된 콜백 함수에 인수를 전달하는 방법을 보여줍니다.

In [ ]:
import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def select(option):
    print(option)


ttk.Button(root, text='Rock', command=lambda: select('Rock')).pack()
ttk.Button(root, text='Paper',command=lambda: select('Paper')).pack()
ttk.Button(root, text='Scissors', command=lambda: select('Scissors')).pack()

root.mainloop()

버튼을 클릭하면 버튼 명령과 관련된 람다 식이 실행됩니다. 문자열 인수를 사용하여 select() 함수를 호출합니다.

명령 바인딩의 제한 사항

첫째, 모든 위젯에서 command 옵션을 사용할 수 있는 것은 아닙니다. 이는 Button 및 기타 일부 위젯으로 제한됩니다.

둘째, command 버튼은 왼쪽 클릭과 백스페이스에 바인딩되지만 Return 키에는 바인딩되지 않습니다.

이를 확인하려면 위 프로그램의 버튼으로 초점을 이동하고 백스페이스 키와 Return 키를 누르면 됩니다.

불행하게도 이는 사용자에게 친숙하지 않으며 command 함수 바인딩을 쉽게 변경할 수 없습니다.

이러한 제한을 극복하기 위해 Tkinter는 이벤트 바인딩 이라는 이벤트와 함수를 연결하는 대체 방법을 제공합니다.

요약

  • 위젯의 command 옵션에 함수 이름을 할당하는 것을 Tkinter에서는 명령 바인딩이라고 합니다. 위젯에서 해당 이벤트가 발생하면 할당된 기능이 자동으로 호출됩니다.
  • 일부 위젯만 이 command 옵션을 지원합니다.

'GUI > tkinter' 카테고리의 다른 글

Tkinter 위젯  (0) 2024.02.20
Tkinter 라벨  (1) 2024.02.18
Tk 테마 위젯에 대한 옵션을 설정하는 3가지 방법  (0) 2024.02.16
Ttk 위젯  (0) 2024.02.15
Tkinter 창  (0) 2024.02.14