Tkinter库的学习记录13-OptionMenu与Combobox

发布时间:2026/7/11 21:03:33

Tkinter库的学习记录13-OptionMenu与Combobox
13、OptionMenu与Combobox13-1 下拉式列表OptionMenuOptionMenu可以翻译为下拉式列表用户可以从中选择一项它的构造方法如下。OptionMenu(父对象, options, *value)其中*value是一系列下拉列表本节将通过实例进行讲解。13-1-1 建立基本的OptionMenu下面程序实例ch13_1建立OptionMenu这个下拉列表中有三个数据分别是Python、Java、C。from tkinter import * root Tk() root.title(ch13_1) root.geometry(300x180) var StringVar(root) optionmenu OptionMenu(root, var, Python, Java, C) optionmenu.pack() root.mainloop()执行结果 程序执行时OptionMenu中是空的这是因为没有选择任何选项。选择任一项后选项会更改。可以留意上述第8行建立OptionMenu下拉列表项目的方式。13-1-2 使用元组建立列表项目上述程序虽然可以建立列表但是当列表中项目较多时不是很方便不过我们可以将列表项目建在元组内再将元组数据放入OptionMenu()构造方法内。下面程序实例ch13_2重新设计ch13_1使用元组存储列表项目。from tkinter import * root Tk() root.title(ch13_2) root.geometry(300x180) omTuple (Python, Java, C) var StringVar(root) optionmenu OptionMenu(root, var, *omTuple) # 创建OptionMenu optionmenu.pack() root.mainloop()执行结果 与ch13_1相同13-1-3 建立默认选项set()到目前程序刚执行时没有看到任何项目不过我们可以使用set()方法为这个OptionMenu建立默认选项。程序实例ch13_3重新设计ch13_2使用set()方法建立默认选项。from tkinter import * root Tk() root.title(ch13_3) root.geometry(300x180) omTuple (Python, Java, C) var StringVar(root) var.set(omTuple[0]) optionmenu OptionMenu(root, var, *omTuple) # 创建OptionMenu optionmenu.pack() root.mainloop()执行结果13-1-4 获得选项内容get()可以使用get()方法获得选项内容。程序实例ch13_4获得OptionMenu目前选项的内容这个程序中提供了Print按钮单击此按钮可以在Python Shell窗口中列出所选的内容。from tkinter import * def printSelection(): print(The selection is: var.get()) root Tk() root.title(ch13_4) root.geometry(300x180) omTuple (Python, Java, C) var StringVar(root) var.set(omTuple[0]) optionmenu OptionMenu(root, var, *omTuple) # 创建OptionMenu optionmenu.pack(pady10) btn Button(root, textPrint, commandprintSelection) btn.pack(pady10, anchorS, sideBOTTOM) root.mainloop()执行结果Python Shell打印了The election is: Python13-2 组合框ComboboxCombobox可以翻译为组合框这是tkinter.ttk的Widget控件它的特性与OptionMenu类似可以说它是Entry和下拉菜单的组合。它的构造方法如下。Combobox(父对象, options)常用的options参数如下。(1) textvariable可以设置Combobox的变量值。(2) valueCombobox的选项内容内容以元组方式存在。13-2-1 建立Combobox在Combobox()构造方法中可以使用value参数建立选项内容。程序实例ch13_5建立一个Combobox。from tkinter import * from tkinter.ttk import * root Tk() root.title(ch13_5) root.geometry(300x120) var StringVar() cb Combobox(root, textvariablevar, value(Python, Java, C#, C)) cb.pack() root.mainloop()执行结果其实在设计上述程序时若是选项很多Combobox()方法的参数value一般是独立在Combobox()处处理可以参考下列实例。程序实例ch13_6将Combobox的选项独立处理可以参考第10行。from tkinter import * from tkinter.ttk import * root Tk() root.title(ch13_6) root.geometry(300x120) var StringVar() cb Combobox(root, textvariablevar) cb[values] (Python, Java, C# C) cb.pack() root.mainloop()执行结果 与上面相同。13-2-2 设置默认选项current()Combobox创建完成后可以使用current()方法建立默认选项。下面程序实例设置元组索引0的元素Python为默认选项。from tkinter import * from tkinter.ttk import * root Tk() root.title(ch13_7) root.geometry(300x120) var StringVar() cb Combobox(root, textvariablevar) cb[values] (Python, Java, C, C, C#) cb.current(0) # 设置默认选项 cb.pack() root.mainloop()执行结果在前面建立Combobox过程中有textvariablevar此var在第8行创建有了它就可以用var.set(xx)方式建立默认选项当然对这个实例而言使用current()方法较为便利。下面程序实例ch13_8重新设计ch13_7使用var.set()建立默认选项。var.set(Python)执行结果与ch13_7相同。13-2-3 获得目前选项get()在前面建立Combobox过程中有textvariablevar可以使用var.get()获得目前选项的内容。下面程序实例ch13_9扩充设计ch13_7增加Print按钮当单击此按钮时可以在Python Shell窗口中打印此选项。from tkinter import * from tkinter.ttk import * def printSelection(): print(var.get()) root Tk() root.title(ch13_9) root.geometry(300x120) var StringVar() cb Combobox(root, textvariablevar) cb[values] (Python, Java, C, C, C#) cb.current(0) # 设置默认选项 cb.pack(pady10) btn Button(root, textPrint, commandprintSelection) btn.pack(pady10, anchorS, sideBOTTOM) root.mainloop()执行结果13-2-4 绑定Combobox当Combobox中的选项有变动时会产生虚拟事件也可以使用这个特性将此事件绑定处理方法。下面程序实例ch13_10同步Combobox和Label的内容。from tkinter import * from tkinter.ttk import * def comboSelection(event): labelVar.set(var.get()) root Tk() root.title(ch13_10) root.geometry(300x120) var StringVar() cb Combobox(root, textvariablevar) cb[values] (Python, Java, C, C, C#) cb.current(0) cb.bind(ComboboxSelected, comboSelection) cb.pack(pady10) labelVar StringVar() label Label(root, textvariablelabelVar) labelVar.set(var.get()) label.pack(sideLEFT) root.mainloop()执行结果

相关新闻

做 OPC 最怕的不是没工具,而是客户不继续聊

做 OPC 最怕的不是没工具,而是客户不继续聊

2026/7/11 21:03:33

做 OPC 的人,最开始通常不会觉得自己缺工具。现在 AI 工具太多了,写文案、做方案、整理表格、生成图片、做简历分析,几乎每隔几天就有新的平台和新的玩法出现。很多人刚开始很有信心,觉得自己只要把工具学会,再包装一下…

【Android 控件】TextView 中设置文字间隔及颜色渐变效果

【Android 控件】TextView 中设置文字间隔及颜色渐变效果

2026/7/11 21:03:33

1、xml 设置字间距 letterSpacing:控制字符水平间距,默认无字间距,正数:文字拉开距离(常用 0.05~0.15);负数:文字挤在一起(重叠);单位 em&#xf…

ADS131M02与STM32F405RG精密数据采集方案详解

ADS131M02与STM32F405RG精密数据采集方案详解

2026/7/11 21:03:33

1. 为什么选择ADS131M02与STM32F405RG组合在工业测量和精密数据采集领域,模数转换器(ADC)的性能往往决定了整个系统的精度上限。ADS131M02作为TI推出的24位Δ-Σ ADC,具有以下核心优势:真正差分输入结构,有效抑制共模噪声可编程数…

克罗恩病治疗哪家强?94项研究给出答案

克罗恩病治疗哪家强?94项研究给出答案

2026/7/11 22:23:36

哪些药能快速控制病情?克罗恩病是一种肠道炎症性疾病,很多患者用传统药效果不好。这项研究分析了94项临床试验,比较了不同生物制剂的效果。在快速让病情好转(诱导缓解)方面:效果最明确(高等级证…

C++高精度计算:从原理到实现,突破内置数据类型限制

C++高精度计算:从原理到实现,突破内置数据类型限制

2026/7/11 22:23:36

1. 项目概述:当数字溢出屏幕时在C的世界里,我们习惯了int、long long、double这些内置数据类型带来的便利。它们像是编程语言为我们准备好的标准工具箱,处理日常计算游刃有余。然而,一旦你开始接触金融计算、密码学、物理模拟或者…

洛雪音乐音源全面指南:如何获取高质量音乐资源的技术解析

洛雪音乐音源全面指南:如何获取高质量音乐资源的技术解析

2026/7/11 22:23:36

洛雪音乐音源全面指南:如何获取高质量音乐资源的技术解析 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 对于使用洛雪音乐播放器的用户来说,音源选择直接决定了音乐体验的…

专业指南:Citra 3DS模拟器在PC上完美运行任天堂独占游戏的完整方案

专业指南:Citra 3DS模拟器在PC上完美运行任天堂独占游戏的完整方案

2026/7/11 22:23:36

专业指南:Citra 3DS模拟器在PC上完美运行任天堂独占游戏的完整方案 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/gh_mirrors/cit/citra 想在个人电脑上重温《精灵宝可梦X/Y》、《火焰纹章觉醒》或《塞尔达传说&#xff1a…

Trae/Vscode/Claude Code等agent接入虚幻5 MCP

Trae/Vscode/Claude Code等agent接入虚幻5 MCP

2026/7/11 22:23:36

开启插件 添加unreal mcp 进入插件页面也就是编辑下面的插件添加toolset 可以直接开启All toolsets但由于博主本身有一个插件有个冲突,所以可以考虑先开启一个editortoolset添加mcp client toolset启动命令行(上面之后记得重启项目) 命令是~ …

数据库安全审计的AI增强:用NLP检测异常SQL访问模式

数据库安全审计的AI增强:用NLP检测异常SQL访问模式

2026/7/11 22:13:35

数据库安全审计的AI增强:用NLP检测异常SQL访问模式 一、"有人半夜两点用root账号select了用户表"——但可能只是一条漏网的正常SQL 传统数据库审计系统依赖规则匹配(Rule-Based):SELECT * FROM users 触发告警、DROP TA…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/10 22:32:48

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/11 19:21:29

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制

2026/7/11 0:02:03

WechatDecrypt技术解析:深入理解微信数据库AES-256-CBC解密机制 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 在数字隐私日益重要的今天,微信聊天记录作为个人数字资产的重要组成…

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符]

2026/7/11 0:02:03

5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载…

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案

2026/7/11 0:02:03

PostgreSQL 备份与恢复实战:从 pg_dump 到时间点恢复的生产级方案 一、数据库备份最容易被忽略的问题,不是「有没有做备份」,而是「备份能不能恢复、恢复要多久、以及恢复后的数据对不对」 很多团队做数据库备份的方式是「写个 cron job&am…