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

发布时间:2026/8/27 10:59:26

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/8/23 0:34:46

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

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

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

2026/8/24 17:54:53

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

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

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

2026/8/23 0:34:47

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

Google搜索被AI和低质内容毁掉?技术检索效率下降的真相与应对

Google搜索被AI和低质内容毁掉?技术检索效率下降的真相与应对

2026/8/27 10:57:55

最近技术圈又有一波关于 Google 搜索的讨论,核心争论点是:Google 是不是把自家最核心的工具给做垮了。这件事并不是某个小版本更新引起的小范围吐槽,而是涉及搜索结果页形态、AI 内容接管、SEO 生态松动以及开发者找资料方式改变的大问题。 …

i.MX8M流媒体模块开发全解:从硬件设计到量产落地

i.MX8M流媒体模块开发全解:从硬件设计到量产落地

2026/8/27 10:57:55

这几年做嵌入式视觉产品,我手里过的方案不少,但被问得最多的一类需求永远是:要一台能采集、编码、推流的小盒子,体积小、发热低、开发周期还要短。很多团队一开始会盯上各类通用SoC,但真正把硬件、软件、量产成本全部摊…

MCU增强安全实战:安全启动、加密存储与防回滚

MCU增强安全实战:安全启动、加密存储与防回滚

2026/8/27 10:57:55

做嵌入式这些年,我见过太多把“联网功能”做完就急着量产的MCU项目。传感器数据直接明文上云,固件包不签名不校验,调试串口留着出厂默认密码——直到某天发现设备被人远程改了配置,或者某批货被抄板抄得底裤都不剩,才开…

自感知芯片:嵌入式分析的下一个技术前沿

自感知芯片:嵌入式分析的下一个技术前沿

2026/8/27 10:57:55

我这两年一直在跟嵌入式分析打交道,说实话,传统方案做到后面,大家拼的早就不只是算法精度了,而是谁能在资源受限的芯片上把“分析”这件事做得更聪明、更省电、更懂自己。最近圈子里都在聊一家做嵌入式分析的公司往“自感知芯片”…

基于SpringBoot的网上购物商城系统的设计与实现源码+文档+讲解视频

基于SpringBoot的网上购物商城系统的设计与实现源码+文档+讲解视频

2026/8/27 10:57:55

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

自媒体传播建模实战:SEIR改进与元胞自动机嵌套设计

自媒体传播建模实战:SEIR改进与元胞自动机嵌套设计

2026/8/27 10:47:54

1. 这不是一份“标准答案”,而是一份真实跑通的建模手记2017年五一杯数学建模B题——“自媒体时代的消息传播问题”,表面看是道典型的传染病模型题,但真正动手做下来,你会发现它根本不是套个SEIR公式、调个ode45就能交卷的作业。我…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/26 1:50:39

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/26 17:50:58

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

2026/8/27 0:07:12

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

LeetCode Hot100(51-60)算法精解与面试技巧

LeetCode Hot100(51-60)算法精解与面试技巧

2026/8/27 0:07:12

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

CRC校验实战:从模2除法到HJ212协议排错

CRC校验实战:从模2除法到HJ212协议排错

2026/8/27 0:07:12

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/26 18:07:30

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/26 17:57:52

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…