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