Tkinter의 OptionMenu 위젯을 사용해 함수를 호출하는 방법을 예제와 함께 살펴보겠습니다. 이 예제에서는 StringVar 객체를 생성하고 get() 메서드를 활용합니다. Tkinter의 StringVar 객체는 위젯의 값을 손쉽게 관리할 수 있도록 도와주는 특수 변수 클래스입니다.
먼저 OptionMenu 위젯을 만들고 문자열 목록으로 메뉴를 채웁니다. 사용자가 옵션을 선택하면 지정된 함수가 자동으로 호출되며, 이 함수는 선택된 항목을 레이블(Label)에 출력합니다.
구현 단계
tkinter라이브러리를 임포트하고 tkinter 프레임 인스턴스를 생성합니다.geometry()메서드로 프레임(윈도우)의 크기를 설정합니다.메뉴에 표시할 문자열 목록을 만들어 변수에 저장합니다.
StringVar()생성자를 호출해 StringVar 객체를 생성합니다. 이 객체는 OptionMenu 위젯의 현재 값을 관리하는 역할을 합니다.도시 이름 목록인 "options"를 준비하고 OptionMenu를 생성한 뒤, StringVar 객체와 options 리스트를 인자로 전달해 메뉴 항목을 구성합니다.
선택된 항목을 화면에 표시할 레이블(Label)을 생성합니다.
선택된 항목을 레이블에 출력하는 사용자 정의 함수 "OptionMenu_Select"를 작성합니다.
command=OptionMenu_Select매개변수를 지정하면, 사용자가 옵션을 선택할 때마다 해당 함수가 자동으로 호출됩니다.마지막으로 애플리케이션 윈도우의
mainloop()를 실행합니다.
예제 코드
# tkinter 라이브러리 임포트
from tkinter import *
# tkinter 프레임 인스턴스 생성
root = Tk()
root.geometry("700x300")
# 옵션 선택 시 호출될 콜백 함수 정의
def OptionMenu_Select(event):
label_city.config(text="You have selected: " + var.get())
# 변수 생성
var = StringVar()
var.set("Select a City")
# 메뉴에 표시할 도시 목록
options = ["Mumbai", "Chennai", "Bhubaneswar", "Pune", "Patna", "Bhopal", "Surat", "Hyderabad", "New Delhi", "Lucknow"]
OptionMenu(root, var, *(options), command=OptionMenu_Select).pack(pady=50)
# 선택 결과를 표시할 레이블
label_city = Label(root, font="Calibri,12,bold")
label_city.pack(padx=20, pady=20)
root.mainloop()실행 결과
위 코드를 실행하면 다음과 같은 화면이 나타납니다.

사용자가 드롭다운 메뉴에서 옵션을 하나 선택하면, 선택한 항목이 레이블로 즉시 표시됩니다.

참고 사항
OptionMenu의 command 콜백에는 선택된 값이 문자열 인자로 전달됩니다. 따라서 함수 내부에서 var.get()을 호출하는 대신 전달받은 인자를 그대로 사용할 수도 있습니다. 또한 여러 개의 OptionMenu를 함께 사용할 경우, 각 위젯마다 별도의 StringVar 객체를 할당해야 값을 독립적으로 관리할 수 있습니다.