Python 窗体(tkinter)下拉列表框(Combobox)实例


Posted in Python onMarch 04, 2020

废话不多说,看代码吧!

import tkinter
from tkinter import ttk
 
def go(*args):  #处理事件,*args表示可变参数
  print(comboxlist.get()) #打印选中的值
 
win=tkinter.Tk() #构造窗体
comvalue=tkinter.StringVar()#窗体自带的文本,新建一个值
comboxlist=ttk.Combobox(win,textvariable=comvalue) #初始化
comboxlist["values"]=("1","2","3","4")
comboxlist.current(0) #选择第一个
comboxlist.bind("<<ComboboxSelected>>",go) #绑定事件,(下拉列表框被选中时,绑定go()函数)
comboxlist.pack()
 
win.mainloop() #进入消息循环

补充知识:Python GUI 之 Combobox 学习

1. 序言

本章介绍tkinter.ttk的Combobox控件。

2. 环境信息

********************************
本系列运行平台:Windows10 64bit
Python 版本:3.7
********************************

3. Combobox

Combobox为下拉列表控件,它可以包含一个或多个文本项(text item),可以设置为单选或多选。使用方式为ttk.Combobox(root,option...)。

常用的参数列表如下:

参数 描述
master 代表了父窗口
height 设置显示高度、如果未设置此项,其大小以适应内容标签
width 设置显示宽度,如果未设置此项,其大小以适应内容标签
state 可读状态,如state= “readonly”
textvariable 设置textvariable属性

一些常用的函数:

函数 描述
get 返回制定索引的项值,如listbox.get(1);返回多个项值,返回元组,如listbox.get(0,2);返回当前选中项的索引listbox.curselection()
values 设定下拉列表的内容。如 data = ["a","b","c"], cbx["values"] = data
current(i) 指定下拉列表生成时显示在列表值,i = index。如current(2),显示列表中的第三个值

事件:

下拉列表没有command函数(方法)。

下拉列表的虚拟事件是 "<<ComboboxSelected>>"。

4. 实例

实例1

from tkinter import *
from tkinter import ttk
 
#Create an instance
win = Tk()
win.title("Learn Combobox")
 
#create a Label
lb1 = Label(win, text = "Below is a combobox 1", font = "tahoma 12 normal")
lb1.grid(column = 0, row = 0, padx = 8, pady = 4)
 
def show_select_1():
	print("post_command: show_select")
	print(value.get())
 
#Define tkinter data type
data = ["a","b","c"]
value = StringVar()
 
#Create a combobox, and tighter it to value
cbx_1 = ttk.Combobox(win, width = 12, height = 8, textvariable = value, postcommand = show_select_1)
cbx_1.grid(column = 0, row = 1)
 
#add data to combobox
cbx_1["values"] = data
 
#======================================================================================================
#create a Label
lb2 = Label(win, text = "Below is a combobox 2", font = "tahoma 12 normal")
lb2.grid(column = 0, row = 4, padx = 8, pady = 4)
 
def show_data_2(*args):
	print("Event: ComboboxSelected")
	print(cbx_2.get())
 
#Define tkinter data type
data2 = ["a2","b2","c2","d2","e2"]
 
#Create a combobox, and tighter it to value
cbx_2 = ttk.Combobox(win, width = 12, height = 8)
cbx_2.grid(column = 0, row = 5)
 
#set cbx_2 as readonly
cbx_2.configure(state = "readonly")
 
#add data to combobox
cbx_2["values"] = data2
#set the initial data [index =2] to shows up when win generated
cbx_2.current(2)
 
#bind a event
cbx_2.bind("<<ComboboxSelected>>", show_data_2)
 
win.mainloop()

以上这篇Python 窗体(tkinter)下拉列表框(Combobox)实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 爬取携程所有机票的实例代码
Jun 11 Python
详解windows python3.7安装numpy问题的解决方法
Aug 13 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
Python绘制频率分布直方图的示例
Jul 08 Python
Django models.py应用实现过程详解
Jul 29 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
没编程基础可以学python吗
Jun 17 Python
Python自省及反射原理实例详解
Jul 06 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 #Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 #Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 #Python
利用Python脚本批量生成SQL语句
Mar 04 #Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 #Python
Python正则表达式学习小例子
Mar 03 #Python
python正则表达式实例代码
Mar 03 #Python
You might like
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
Python代码解决RenderView窗口not found问题
2016/08/28 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
预备党员公开承诺书
2014/05/28 职场文书
职工小家建设活动方案
2014/08/25 职场文书
大学新生入学感想
2015/08/07 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers