Tkinter下拉選單

Tkinter下拉選單-combobox是使用者可用來選擇的下拉選單。它是Entrydrop-down選單的組合。當你單擊左側的箭頭時,你將看到一個顯示所有選項的下拉選單,如果單擊其中的一個,它將替換當前的Entry內容。

Tkinter下拉選單舉例

Tkinter Combobox_Basic.py
import tkinter as tk
from tkinter import ttk
from sqlalchemy.sql.expression import column
 
app = tk.Tk() 
app.geometry('200x100')

labelTop = tk.Label(app,
                    text = "Choose your favourite month")
labelTop.grid(column=0, row=0)

comboExample = ttk.Combobox(app, 
                            values=[
                                    "January", 
                                    "February",
                                    "March",
                                    "April"])
pprint(dict(comboExample)) 
comboExample.grid(column=0, row=1)
comboExample.current(1)

print(comboExample.current(), comboExample.get())

app.mainloop()

Tkinter Tutorial Combobox Basic

from tkinter import ttk

Tkinter下拉選單控制元件位於Tkinter的ttk模組中,因此,你需要導入此模組才能使用此控制元件。

comboExample = ttk.Combobox(app, 
                            values=[
                                    "January", 
                                    "February",
                                    "March",
                                    "April"])

它會建立Tkinter下拉選單控制元件例項,並分配將顯示在下拉選單中的值。

comboExample.current(1)

通常,下拉選單中顯示的預設項是值列表中的第一個元素。你還可以使用current(index)方法將其更改為任何元素。

print(comboExample.current(), comboExample.get())

你還可以使用current()來獲取當前所選元素的索引,並使用get()方法來獲取元素本身。

Tkinter下拉選單事件綁定

下拉選單回撥函式綁定與前幾章介紹的控制元件不同。 bind()方法是當使用者在下拉選單中選擇元素時將回撥函式與下拉選單虛擬事件綁定的方法。

Tkinter Combobox_Virtual Event Binding.py
import tkinter as tk
from tkinter import ttk
from sqlalchemy.sql.expression import column

def callbackFunc(event):
     print("New Element Selected")
     
app = tk.Tk() 
app.geometry('200x100')

labelTop = tk.Label(app,
                    text = "Choose your favourite month")
labelTop.grid(column=0, row=0)

comboExample = ttk.Combobox(app, 
                            values=[
                                    "January", 
                                    "February",
                                    "March",
                                    "April"])


comboExample.grid(column=0, row=1)
comboExample.current(1)

comboExample.bind("<<ComboboxSelected>>", callbackFunc)


app.mainloop()

def callbackFunc(event):
     print("New Element Selected")

無論你何時從列表中選擇元素,它都會呼叫該回撥函式。

Note
event作為傳遞引數不應該被跳過,它是從下拉框虛擬事件中傳遞過來的。
comboExample.bind("<<ComboboxSelected>>", callbackFunc)

它將虛擬事件”<< ComboboxSelected >>“與回撥函式綁定在一起。

每次從列表中選擇一個新元素時,它都會列印出New Element Selected