如何在 Tkinter 中建立下拉選單

Jinku Hu 2024年2月15日
  1. Tkinter OptionMenu 示例
  2. 將值更改時的命令繫結到 OptionMenu
如何在 Tkinter 中建立下拉選單

Tkinter 中建立下拉選單有幾種方法。

  1. 使用在 Tkinter 組合框教程中介紹的組合框
  2. 使用 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 是建立的選項選單的父級,

variabletk.StringVar 型別的初始文字變數。

*OptionList 是選單的其他選項。* 是用於資料容器的 unpack,在此處是指 list

Tkinter OptionMenu Example

將值更改時的命令繫結到 OptionMenu

OptionMenu 從選項列表中選擇新值時,無法連線對應的命令。你不能像按鈕控制元件那樣簡單地繫結回撥函式。

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

你需要使用 trace 方法將 observer 回撥附加到 OptionMenu 變數。每當變數更改時,它都會觸發回撥函式。

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()

traceobserver 有三種模式,

observer 模式 解釋
w variable 被更改或選擇時
r variable 被讀取時
u variable 被刪除時

variable.trace("w", callback) 意味著當 variable 被使用者更改或選擇時它將呼叫 callback 函式。

Tkinter OptionMenu Callback

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook