Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter에서 Button 명령(command)에 인수를 전달하는 방법

Tkinter 애플리케이션을 개발하다 보면 버튼을 클릭했을 때 특정 창을 열거나 이벤트를 실행해야 하는 경우가 자주 발생합니다. 버튼이 의도한 대로 온전히 작동하도록 만들려면 command 속성에 함수를 지정하고, 필요에 따라 인수를 함께 전달할 수 있습니다.

command는 Button 위젯의 속성으로, 함수 이름을 값으로 받습니다. 이 함수에는 버튼이 클릭되었을 때 수행할 동작, 즉 이벤트의 실제 로직이 정의됩니다.

그럼 먼저 버튼을 생성하고, command 속성에 함수를 인수로 전달하여 이벤트를 연결하는 기본적인 방법부터 살펴보겠습니다.

예제

다음 예제에서는 하나의 창과, 클릭하면 창을 즉시 닫아주는 버튼을 만들어 보겠습니다.

#필요한 라이브러리 임포트
from tkinter import *

#tkinter 프레임 또는 윈도우 인스턴스 생성
win = Tk()

#창 제목 설정
win.title("Button Command Example")

#창 크기 설정
win.geometry("600x300")

#창에 라벨 추가
Label(win, text= "Example", font= ('Times New Roman bold',
20)).pack(pady=20)

#함수 정의
def close_event():
    win.destroy()

#버튼을 생성하고 command에 함수 이름을 인수로 전달
my_button = Button(win, text= "Close", font=('Helvetica bold', 20),
borderwidth=2, command= close_event)
my_button.pack(pady=20)

win.mainloop()

실행 결과

위 코드를 실행하면 함수가 Button의 command 속성에 인수로 올바르게 전달된 것을 확인할 수 있습니다.

Tkinter에서 Button 명령(command)에 인수를 전달하는 방법

화면의 "Close" 버튼을 클릭하면 창이 즉시 닫히는 것을 볼 수 있습니다.

참고: 매개변수가 있는 함수에 인수 전달하기

만약 호출하려는 함수가 매개변수를 필요로 한다면, lambda를 사용하여 인수를 전달할 수 있습니다. 함수 이름 뒤에 괄호를 붙여 직접 호출하면 버튼 생성 시점에 함수가 실행되어 버리므로 주의해야 합니다.

#lambda를 사용해 인수 전달
my_button = Button(win, text="클릭", command=lambda: my_function(arg1, arg2))

이처럼 command 속성에 함수를 연결하는 방식만 익히면, Tkinter에서 버튼과 다양한 이벤트를 자유롭게 연동할 수 있습니다.