Python GUI 编程:tkinter 初学者入门指南——Ttk 组合框 Combobox

摘要:combobox 组合框小部件是新增的 Ttk 主题小部件,是 Entry 文本框和 Listbox 列表框的组合。除了允许在一组值中选择一个值外,它还允许输入自定义值。

在本文中,将介绍如何创建一个 tkinter Combobox 组合框小部件,该小部件允许用户从一组值中选择一个值。

combobox 组合框小部件是新增的 Ttk 主题小部件,是 Entry 文本框和 Listbox 列表框的组合。除了允许在一组值中选择一个值外,它还允许输入自定义值。

要创建组合框小部件,使用以下构造函数。

current_var = tk.StringVarcombobox = ttk.Combobox(master, textvariable=current_var)

textvariable 参数将变量链接到 current_var。要获取当前组合框选定的值,可以使用 current_var 变量。

current_value = current_var.get

或者,直接使用 combobox 对象的 get 方法:

current_value = combobox.get设置组合框的值

要设置当前值,可以使用 current_var 变量或 combobox 对象的 set 方法。

current_value.set(new_value)combobox.set(new_value)

默认情况下,可以直接在组合框中输入值。如果不允许直接输入值,可以将组合框设置为只读 readonly 否则,设置为 normal。

可以为组合框分配一个列表或元组,进行批量赋值。

combobox['values'] = ('value1', 'value2', 'value3')`

当组合框的值发生更改时,可以触发事件,使用 bind 方法绑定 > 事件。

combobox.bind('>', callback)

Combobox 组合框示例

import tkinter as tkfrom tkinter.messagebox import showinfofrom tkinter import ttkfrom calendar import month_namefrom datetime import datetimeroot = tk.Tkroot.geometry('600x400+200+200')root.title('Combobox 组合框演示')def year_changed(event):showinfo(title='结果', message=f'你选择了 {selected_year.get}!')def month_changed(event):showinfo(title='结果', message=f'你选择了 {selected_month.get}!')label = tk.Label(text="请选择年份:")label.pack(fill=tk.X, padx=5, pady=5)selected_year = tk.StringVarcombobox1 = ttk.Combobox(root, textvariable=selected_year)combobox1['values'] = [2023, 2024, 2025]combobox1['state'] = 'readonly'combobox1.pack(padx=5, pady=5)combobox1.bind('>', year_changed)label = tk.Label(text="请选择月份:")label.pack(fill=tk.X, padx=5, pady=5)selected_month = tk.StringVarcombobox2 = ttk.Combobox(root, textvariable=selected_month)combobox2['values'] = [month_name[m][0:3] for m in range(1, 13)]combobox2['state'] = 'readonly'combobox2.pack(padx=5, pady=5)combobox2.bind('>', month_changed)# 设置当前月份为组合框的当前值current_month = datetime.now.strftime('%b')combobox2.set(current_month)root.mainloopimport tkinter as tkfrom tkinter import ttkroot = tk.Tkroot.geometry('600x400+200+200')root.title('Combobox 组合框演示')label = tk.Label(text="请选择省份:")label.pack(fill=tk.X, padx=5, pady=5)combobox1 = ttk.Combobox(root)combobox1['values'] = ["山东省", "江苏省", "吉林省"]combobox1['state'] = 'readonly'combobox1.pack(padx=5, pady=5)label = tk.Label(text="请选择城市:")label.pack(fill=tk.X, padx=5, pady=5)combobox2 = ttk.Combobox(root)combobox2['state'] = 'readonly'combobox2.pack(padx=5, pady=5)# 联动响应region = {'山东省': ["济南", "青岛", "淄博"],'江苏省': ["南京", "苏州" ],'吉林省': ["长春", "吉林"]}def handle(event):selected = combobox1.getcombobox2['values'] = region[selected]combobox1.bind('>', handle) root.mainloop

来源:鹭洋教育

相关推荐