Tkinter 下拉選單

Tkinter 支援下拉選單。這與你作業系統上的標準組合框類似。

該控制元件稱為 OptionMenu,你需要的引數是:frame,tk 變數和帶有選項的字典。

![Tkinter 下拉選單](/img/Tutorial/Tkinter/Tkinter dropdown.png)

Tkinter 下拉示例

下面的示例建立一個帶有組合框的 Tkinter 視窗。

from Tkinter import *
import Tkinter as ttk
from ttk import *
 
root = Tk()
root.title("Tk dropdown example")
 
# Add a grid
mainframe = Frame(root)
mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)
 
# Create a Tkinter variable
tkvar = StringVar(root)
 
# Dictionary with options
choices = { 'Pizza','Lasagne','Fries','Fish','Potatoe'}
tkvar.set('Pizza') # set the default option
 
popupMenu = OptionMenu(mainframe, tkvar, *choices)
Label(mainframe, text="Choose a dish").grid(row = 1, column = 1)
popupMenu.grid(row = 2, column =1)
 
# on change dropdown value
def change_dropdown(*args):
    print( tkvar.get() )
 
# link function to change dropdown
tkvar.trace('w', change_dropdown)
 
root.mainloop()

它首先建立一個 Tk 物件並將其傳遞給使用 Frame() 建立的 tkinter 框架

root = Tk()
root.title("Tk dropdown example")
mainframe = Frame(root)

網格將新增到框架中,該框架將保持組合框。

mainframe.grid(column=0,row=0, sticky=(N,W,E,S) )
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
mainframe.pack(pady = 100, padx = 100)

彈出選單包含在變數選項中定義的選項列表。 使用以下行建立 Tkinter 變數:

tkvar = StringVar(root)

使用 .set() 方法設定變數的預設值。 我們用以下方法建立 Tkinter 組合框:

popupMenu = OptionMenu(mainframe, tkvar, *choices)

並將回撥方法 change_dropdown 連結到此組合框。