Tkinter でプルダウンメニューを作成する
胡金庫
2023年1月30日
Tkinter
Tkinter Dropdown Menu
Tkinter でプルダウンメニューを作るにはいくつかの方法があります。
- Tkinter コンボボックス教程で紹介されたコンボボックス
Comboboxを使用する OptionMenuウィジェットを使用します。
OptionMenu とコンボボックスのウィジェットは似ていますが、それは 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 は作成したオプションメニューの親レベルです。
variable は tk.StrigVar タイプの初期テキスト変数です。
*OptionList はメニューの他のオプションです。* はデータ容器用の unpack です。ここでは list を指します。

値を変更したときのコマンドを OptionMenu にバインドする
OptionMenu がオプションリストから新しい値を選択した場合、対応するコマンドを接続できません。ボタンウィジェットのようにコールバック関数を簡単にバインドすることはできません。
tk.Button(app, text="Increase", width=30, command=change_label_number)
あなたは trace を使って observer を Option Menu 変数にフィードバックする必要があります。変数が変更されるたびに、コールバック関数が起動されます。
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()
trace の observer は 3つのモードがあります。
| observer モード | 説明 |
|---|---|
w |
variable が変更または選択された場合 |
r |
variable が読み込まれた場合 |
u |
variable が削除された場合 |
variable.trace("w", callback) は、variable がユーザによって変更または選択されたときに calback 関数を呼び出すことを意味します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
