Tkinter 에서 드롭 다운 메뉴를 만드는 방법

  1. Tkinter OptionMenu 예제
  2. 값이 변경 될 때 명령을 OptionMenu 에 바인딩

Tkinter 에서 드롭 다운 메뉴를 만드는 몇 가지 방법이 있습니다.

  1. Tkinter tutorial Combobox chapter에 소개 된대로 Combobox 를 사용하십시오.
  2. OptionMenu Widget을 사용하십시오.

OptionMenu 는 Combobox 위젯과 약간 비슷하지만 이미 Tkinter 자체에 포함되어 있으므로 Combobox 의 경우처럼 ttk 를 가져올 필요가 없습니다.

Tkinter OptionMenu 예제

import tkinter as tk

OptionList = [
"Aries",
"Taurus",
"Gemini",
"Cancer"
] 

app = tk.Tk()

app.geometry('100x200')

variable = tk.StringVar(app)
variable.set(OptionList[0])

opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=('Helvetica', 12))
opt.pack()

app.mainloop()
opt = tk.OptionMenu(app, variable, *OptionList)

app 는 생성 된 옵션 메뉴의 부모입니다.

variabletk.StringVar 타입을 가진 초기 텍스트 변수입니다.

* OptionList 는 다른 메뉴 옵션입니다. *는 여기에 list유형으로 컨테이너 포장 풀기에 사용됩니다.

Tkinter 옵션 메뉴 예

값이 변경 될 때 명령을 OptionMenu 에 바인딩

옵션 목록에서 새 값을 선택하면 OptionMenu 에서 명령을 연결할 수 없습니다. button widget처럼 콜백 함수를 단순히 연결할 수 없습니다.

tk.Button(app, text="Increase", width=30, command=change_label_number)

observer콜백을 OptionMenu 변수에 첨부하려면 trace 메소드를 사용해야합니다. 변수가 변경 될 때마다 콜백 함수가 트리거됩니다.

OptionMenu 콜백 예

import tkinter as tk

OptionList = [
"Aries",
"Taurus",
"Gemini",
"Cancer"
] 

app = tk.Tk()

app.geometry('100x200')

variable = tk.StringVar(app)
variable.set(OptionList[0])

opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=('Helvetica', 12))
opt.pack(side="top")


labelTest = tk.Label(text="", font=('Helvetica', 12), fg='red')
labelTest.pack(side="top")

def callback(*args):
    labelTest.configure(text="The selected item is {}".format(variable.get()))

variable.trace("w", callback)

app.mainloop()

추적 ‘관찰자’에는 세 가지 모드가 있습니다.

관찰자 모드 설명
w 누군가가 ‘변수’를 쓸 때
r 누군가가 ‘변수’를 읽을 때
u 변수가 삭제 될 때

variable.trace( "w", callback)는 사용자가 변수를 쓰거나 선택할 때 콜백 함수를 호출한다는 의미입니다.

Tkinter 옵션 메뉴 콜백