首页 > 编程语言 >【Python GUI 编程】tkinter :Ttk 组合框 Combobox

【Python GUI 编程】tkinter :Ttk 组合框 Combobox

时间:2024-12-21 11:08:59浏览次数:4  
标签:tkinter 组合 Python Combobox current tk combobox1 root

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

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

创建组合框

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

current_var = tk.StringVar()
combobox = 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['state'] = 'readonly'

批量设置组合框的值

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

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

绑定事件

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

combobox.bind('<<ComboboxSelected>>', callback)

Combobox 组合框示例

import tkinter as tk
from tkinter.messagebox import showinfo
from tkinter import ttk
from calendar import month_name
from datetime import datetime
root = tk.Tk()
root.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.StringVar()
combobox1 = ttk.Combobox(root, textvariable=selected_year)
combobox1['values'] = [2023, 2024, 2025]
combobox1['state'] = 'readonly'
combobox1.pack(padx=5, pady=5)
combobox1.bind('<<ComboboxSelected>>', year_changed)

label = tk.Label(text="请选择月份:")
label.pack(fill=tk.X, padx=5, pady=5)
selected_month = tk.StringVar()
combobox2 = 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('<<ComboboxSelected>>', month_changed)

# 设置当前月份为组合框的当前值
current_month = datetime.now().strftime('%b')
combobox2.set(current_month)
root.mainloop()

组合框联动

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.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.get()
  combobox2['values'] = region[selected]

combobox1.bind('<<ComboboxSelected>>', handle)  
root.mainloop()

原创 信息技术资源 信息科技云课堂

标签:tkinter,组合,Python,Combobox,current,tk,combobox1,root
From: https://www.cnblogs.com/o-O-oO/p/18620532

相关文章

  • 使用 pickle 模块在 Python 中进行 pickling 和 unpickling
    pickle—Python对象序列化python 是一种广泛使用的通用高级编程语言。在本文中,我们将学习使用pickle模块在Python中进行pickling和unpickling。PythonPickle模块pickle模块用于实现二进制协议,用于序列化和反序列化Python对象结构。Pickli......
  • 【Python GUI 编程】tkinter:Ttk 选项卡 Notebook
    在本文中,将介绍如何使用TkinterNotebook小部件创建选项卡。Notebook是由TkinterTtk模块引入的强大小部件。允许开发者创建包含多个选项卡的界面,每个选项卡可以包含不同的内容。创建Notebook小部件,请使用如下构造函数:notebook=ttk.Notebook(master,**kw)添加选项卡......
  • 使用Python进行量化交易,关键知识点有哪些?
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • 【2024最新】基于Python+Mysql+django的公务员考试信息管理系统Lw+PPT
    作者:计算机搬砖家开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码精品专栏:Java精选实战项目源码、Python精选实战项目源码、大数据精选实战项目源码......
  • 【2024最新】基于Python+Mysql+django的宾馆管理系统Lw+PPT
    作者:计算机搬砖家开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码精品专栏:Java精选实战项目源码、Python精选实战项目源码、大数据精选实战项目源码......
  • 【2024最新】基于Python+Mysql+django的高校教室管理系统Lw+PPT
    作者:计算机搬砖家开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码精品专栏:Java精选实战项目源码、Python精选实战项目源码、大数据精选实战项目源码......
  • Django:一个王者级Web开发Python框架
    大家好啊!今天我要和大家分享Python世界中的"网站开发利器"——Django框架。它就像是一个全能的网站建筑师,不仅自带了后台管理系统、数据库接口、用户认证等功能,还能帮我们处理各种安全问题。使用Django,我们可以快速搭建一个功能完善的网站。无论你是想做个人博客,还是想开发企业......
  • python3:访问apple server api
     一,安装用到的库:(venv)liuhongdi@lhdpc:/data/work/python/xiaoqu$pip3installPyJWTCollectingPyJWTDownloadingPyJWT-2.10.1-py3-none-any.whl.metadata(4.0kB)DownloadingPyJWT-2.10.1-py3-none-any.whl(22kB)Installingcollectedpackages:PyJWTSucces......
  • AI开发:支持向量机(SVM)鸢尾花模型入门教程- Python 机器学习
    最近接触了一些数据分析的任务,越来越多地听到支持向量机(SVM),之前我们也一起学习过 AI开发:支持向量机(SVM)入门教程-Python机器学习今天我们再由浅入深的地来重温和学习这个AI算法,以便我们进一步掌握如何熟悉和使用这一AI大杀器。SVM用在哪里 --文本分类垃圾邮件过滤:通......
  • 【Python】*args和**kwargs
    【Python】*args和**kwargs一、*args:接收不定数量的位置参数示例1:简单的加法计算器示例2:转发参数给另一个函数二、**kwargs:接收不定数量的关键字参数示例3:创建用户配置文件示例4:合并多个字典三、组合使用*args和**kwargs示例5:构建RESTfulAPI请求四、结论五、相关......