애플리케이션을 개발하다 보면 드롭다운 목록 형태로 사용자에게 고정된 옵션이나 선택지를 제공해야 하는 경우가 자주 있습니다. 이러한 옵션 목록은 OptionMenu 위젯 생성자를 사용하여 손쉽게 만들 수 있습니다.
OptionMenu(window, variable, choice1, choice2, choice3……)
옵션이 한 번 생성되면 클릭 이벤트를 통해 어떤 옵션이 선택되었는지 감지할 수 있습니다. 일반적으로 콜백 함수를 등록하여 선택된 값을 출력하는 방식으로 처리합니다.
이번 예제에서는 1부터 9까지의 선택지를 가진 체크 버튼이 포함된 간단한 애플리케이션을 만들어 보겠습니다. 기본값은 set 메서드를 사용하여 "1"로 설정하며, 사용자가 다른 옵션을 선택하면 해당 값이 화면에 출력됩니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
# tkinter 프레임 인스턴스 생성
tk = Tk()
tk.geometry("700x300")
# 옵션 선택 시 호출될 콜백 함수 정의
def OptionMenu_CheckButton(event):
print(var.get())
pass
# 변수 생성 및 기본값 설정
var = StringVar(); var.set("1")
options = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
OptionMenu(tk, var, *(options), command=OptionMenu_CheckButton).pack()
tk.mainloop()실행 결과
위 코드를 실행하면 사용자가 드롭다운 목록에서 선택한 옵션이 실시간으로 추적되며, 선택할 때마다 해당 값이 콘솔 화면에 출력됩니다.

참고: trace 메서드를 활용한 대안
command 매개변수 외에도 변수 객체의 trace_add 메서드를 사용하면 값이 변경될 때마다 자동으로 콜백 함수를 실행할 수 있습니다. 이 방식은 여러 위젯이 동일한 변수를 공유할 때 특히 유용합니다.
var.trace_add("write", lambda *args: print(var.get()))두 방법 모두 Tkinter에서 위젯 상태 변화를 감지하는 표준적인 접근 방식이므로, 애플리케이션의 구조와 요구 사항에 맞게 선택하여 사용하시면 됩니다.