Python tkinter (6) Listbox

Python的标准Tk GUI工具包的接口

tkinter系列文章

python tkinter窗口简单实现

Python tkinter (1) —— Label标签

Python tkinter (2) —— Button标签

Python tkinter (3) —— Entry标签

Python tkinter (4) —— Text控件

GUI

目录

Listbox

创建listbox

添加元素

添加到开始

添加到最后

删除元素

删除单个

删除多个

选中元素

取消选中元素

获取列表元素个数

获取值

返回选中

判断是否选中

绑定变量

打印当前列表选项

设置选项

绑定事件

连选

绑定滚动条

支持多选

总结


Listbox

列表框控件,可以包含一个或者多个文本框

作用:在listbox控件的小窗口显示一个字符串

创建listbox

创建listbox控件并添加几个元素

示例如下:

import tkintertk = tkinter.Tk()
tk.title('listbox示例')
tk.geometry('300x200+200+20')'''
列表框控件,可以包含一个或者多个文本框
作用:在listbox控件的小窗口显示一个字符串
'''# 1.创建一个listbox,添加几个元素
list1 = tkinter.Listbox(tk, selectmode=tkinter.BROWSE)
list1.pack()
for item in ['从明天起', '做一个幸福的人', '喂马',  '劈柴', '周游世界']:# 按照顺序添加list1.insert(tkinter.END, item)

效果如下:

 

添加元素

两种添加方式

添加到开始

使用insert方法,参数为tkinter.ACTIVE和要添加的元素。

示例如下:

# 在开始添加
list1.insert(tkinter.ACTIVE, '《面朝大海春暖花开》')

添加到最后

还是使用insert方法,参数为tkinter.END和要添加的元素(可为字符串或列表)。

示例如下:

# 添加元素到最后
list1.insert(tkinter.END, '愿你在尘世获得幸福')
# 将列表当做一个元素添加
list1.insert(tkinter.END, ['我只愿面朝大海', ',', '春暖花开'])

删除元素

通过指定元素索引来删除相应元素

删除单个

示例如下:

list1.delete(1)

删除多个

Delete有两个参数,一个起始位置索引,第二个为终止位置索引。

当指定第二个元素时,将删除从起始位置到终止位置的所有元素。

示例如下:

list1.delete(1, 3)

选中元素

参数1为开始的索引,参数2为结束的索引;

如果不指定参数2,只选中第一个索引出的内容。

示例如下:

list1.select_set(1)
list1.select_set(2, 4)

效果如下:

取消选中元素

取消选中:参数1为开始的索引,参数2为结束的索引;

如果不指定参数2,只取消第一个索引出的内容。

示例如下:

list1.select_clear(3)
list1.select_clear(1, 2)

注意:测试效果时,需与选中结合使用。

获取列表元素个数

示例如下:

print(list1.size())

获取值

获取值:从列表中取值 参数1为开始的索引,参数2为结束的索引;

如果不指定参数2,只获取第一个索引出的内容。

示例如下:

print(list1.get(1, 3))
# 执行结果
# ('做一个幸福的人', '喂马', '劈柴')

返回选中

返回当前选中的索引项,元组格式。

示例如下:

print(list1.curselection())

判断是否选中

判断一个选项是否被选中,返回True或False。

示例如下:

print(list1.select_includes(3))

绑定变量

创建一个字符串变量与listbox控件进行绑定,

SINGLE与BORWSE相似,但是不支持鼠标按下后移动。

示例如下:

import tkintertk = tkinter.Tk()
tk.title('listbox示例')
tk.geometry('300x200+200+20')# 绑定变量
lv = tkinter.StringVar()
list1 = tkinter.Listbox(tk, selectmode=tkinter.SINGLE, listvariable=lv)
list1.pack()for item in ['从明天起', '做一个幸福的人', '喂马', '劈柴', '周游世界']:# 按照顺序添加list1.insert(tkinter.END, item)

打印当前列表选项

通过绑定的变量可以获取列表中的选项内容。

示例如下:

print(lv.get())
# 执行结果
# ('从明天起', '做一个幸福的人', '喂马', '劈柴', '周游世界')

设置选项

通过操作绑定变量的set方法,可以更改之前设置的列表元素。

示例如下:

lv.set(('选项1', '选项2'))

绑定事件

对列表控件绑定一个鼠标双击事件。

示例如下:

def my_print(event):print(list1.get(list1.curselection()))# 双击按钮事件
list1.bind('<Double-Button-1>', my_print)

当对列表元素双击后,会在控制台打印出选中的元素。

效果如下:

连选

EXTENDED 可以使listbox支持shift和control;

按住shitt,可以实现连选;按住contro1,可以实现多选。

示例如下:

import tkintertk = tkinter.Tk()
tk.title('listbox示例')
tk.geometry('300x200+200+20')list1 = tkinter.Listbox(tk, selectmode=tkinter.EXTENDED)
list1.pack()for item in ['从明天起', '做一个幸福的人', '喂马', '劈柴', '周游世界']:# 按照顺序添加list1.insert(tkinter.END, item)

绑定滚动条

在内容增多后,可以绑定滚动条来下划查看内容。

示例如下:

import tkintertk = tkinter.Tk()
tk.title('listbox示例')
# tk.geometry('300x200+200+20')
# 滚动条 (内容增多时增加滚动条)
scroll = tkinter.Scrollbar(tk)
scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
list1 = tkinter.Listbox(tk, selectmode=tkinter.EXTENDED)
# 格外给属性赋值
scroll['command'] = list1.yview()for item in ['《面朝大海春暖花开》', '从明天起,关心粮食和蔬菜','我有一所房子,面朝大海,春暖花开','从明天起,和每一个亲人通信','告诉他们我的幸福','那幸福的闪电告诉我的','我将告诉每一个人','给每一条河每一座山取一个温暖的名字','陌生人,我也为你祝福','愿你有一个灿烂的前程','愿你有情人终成眷属','愿你在尘世获得幸福','我只愿面朝大海,春暖花开']:list1.insert(tkinter.END, item)list1.configure(yscrollcommand=scroll.set)
list1.pack(side=tkinter.LEFT, fill=tkinter.BOTH)tk.mainloop()

效果如下:

支持多选

通过更改listbox控件属性为MULTIPLE,可通过鼠标点击进行多选和取消。

示例如下:

import tkintertk = tkinter.Tk()
tk.title('简单示例')
tk.geometry('300x200+200+20')# MULTIPLE 支持多选
list1 = tkinter.Listbox(tk, selectmode=tkinter.MULTIPLE)for item in ['《面朝大海春暖花开》', '从明天起,关心粮食和蔬菜','我有一所房子,面朝大海,春暖花开','从明天起,和每一个亲人通信','告诉他们我的幸福','那幸福的闪电告诉我的','我将告诉每一个人','给每一条河每一座山取一个温暖的名字','陌生人,我也为你祝福','愿你有一个灿烂的前程','愿你有情人终成眷属','愿你在尘世获得幸福','我只愿面朝大海,春暖花开']:list1.insert(tkinter.END, item)
list1.pack()tk.mainloop()

效果为:

总结

本文主要是Python tkinter Listbox控件介绍及使用示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/246427.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI数字人-数字人视频创作数字人直播效果媲美真人

在科技的不断革新下&#xff0c;数字人技术正日益融入到人们的生活中。近年来&#xff0c;随着AI技术的进一步发展&#xff0c;数字人视频创作领域出现了一种新的创新方式——AI数字人。数字人视频通过AI算法生成虚拟主播&#xff0c;其外貌、动作、语音等方面可与真实人类媲美…

09. Springboot集成sse服务端推流

目录 1、前言 2、什么是SSE 2.1、技术原理 2.2、SSE和WebSocket 2.2.1、SSE (Server-Sent Events) 2.2.2、WebSocket 2.2.3、选择 SSE 还是 WebSocket&#xff1f; 3、Springboot快速集成 3.1、添加依赖 3.2、创建SSE控制器 3.2.1、SSEmitter创建实例 3.2.2、SSEmi…

C++:引用

目录 概念&#xff1a; 引用的使用格式&#xff1a; 引用特性&#xff1a; 常引用 使用场景&#xff1a; 1、做参数 二级指针时的取别名 一级指针取别名 一般函数取别名 2、做返回值 函数返回值的原理&#xff1a; 引用的返回值使用&#xff1a; 引用和指针的对比&…

YOLOv8训练自己的数据集,通过LabelImg

记录下labelImg标注数据到YOLOv8训练的过程,其中容易遇到labelImg的坑 数据集处理 首先在mydata下创建4个文件夹 images文件夹下存放着所有的图片&#xff0c;包括训练集和测试集等。后续会根据代码进行划分。 json文件夹里存放的是labelImg标注的所有数据。需要注意的是&…

Ubuntu findfont: Font family ‘SimHei‘ not found.

matplotlib中文乱码显示 当我们遇到这样奇怪的问题时, 结果往往很搞笑 尝试1不行 Stopping Jupyter Installing font-manager: sudo apt install font-manager Cleaning the matplotlib cache directory: rm ~/.cache/matplotlib -fr Restarting Jupyter. 尝试2 This work fo…

Spring Boot 中的外部化配置

Spring Boot 中的外部化配置 一、配置文件基础1.配置文件格式&#xff08;1&#xff09;YAML 基本语法规则&#xff08;2&#xff09;YAML 支持三种数据结构 2.application 文件3.application.properties 配置文件4.application.yml 配置文件5.Environment6.组织多文件7.多环境…

HTTP动态代理的原理及其对网络性能的影响

HTTP动态代理是一种通过代理服务器来转发HTTP请求和响应数据的网络技术&#xff0c;它可以优化网络性能、提高网络安全性&#xff0c;并解决跨域请求的问题。本文将详细介绍HTTP动态代理的原理及其对网络性能的影响。 一、HTTP动态代理的原理 HTTP动态代理的基本原理是在客户…

微信小程序(十四)分包和分包预加载

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.分包的配置 2.分包预加载的写法 先说说为什么需要分包&#xff1a; 小程序追求小而快&#xff0c;主包的大小控制是小程序上线的硬性要求&#xff0c;分包有利于小程序优化加载速度 分包的注意事项&#xff1a…

大模型+自动驾驶

论文&#xff1a;https://arxiv.org/pdf/2401.08045.pdf 大型基础模型的兴起&#xff0c;它们基于广泛的数据集进行训练&#xff0c;正在彻底改变人工智能领域的面貌。例如SAM、DALL-E2和GPT-4这样的模型通过提取复杂的模式&#xff0c;并在不同任务中有效地执行&#xff0c;从…

数字图像处理(实践篇)三十一 Raw图像数据转为RGB图像实践

目录 1 Raw图像和RGB图像 2 Raw图像的排布方式 3 方案 4 实践 5 其他 1 Raw图像和RGB图像 Raw图片是未经压缩的,没有任何数据损失,Raw图片保留了从图像传感器捕获的每个像素的原始信息,因此可以实现更高的图像质量。

用C语言实现贪吃蛇游戏!!!(破万字)

前言 大家好呀&#xff0c;我是Humble&#xff0c;不知不觉在CSND分享自己学过的C语言知识已经有三个多月了&#xff0c;从开始的C语言常见语法概念说到C语言的数据结构今天用C语言实现贪吃蛇已经有30余篇博客的内容&#xff0c;也希望这些内容可以帮助到各位正在阅读的小伙伴…

Flink实现数据写入MySQL

先准备一个文件里面数据有&#xff1a; a, 1547718199, 1000000 b, 1547718200, 1000000 c, 1547718201, 1000000 d, 1547718202, 1000000 e, 1547718203, 1000000 f, 1547718204, 1000000 g, 1547718205, 1000000 h, 1547718210, 1000000 i, 1547718210, 1000000 j, 154771821…

基于51单片机智能电子秤

实物显示效果&#xff1a; https://www.bilibili.com/video/BV1Wb4y1A7Aw/?vd_source6ff7cd03af95cd504b60511ef9373a1d 功能介绍&#xff1a; &#xff08;1&#xff09;用键盘设计单价&#xff1b; &#xff08;2&#xff09;称重后同时显示该物品的重量、单价和总额&…

记签名机制

签名过程&#xff1a; 首先将数据源通过摘要算法获取到数字摘要 对数字摘要用私钥进行加密得到签名 将原始消息 以及签名发送给消息接收方 接收方用公钥解密得到数字摘要 用同样的摘要算法将原始消息进行计算 比较得到的数字摘要与解密后的是否一致 Android学习笔记——Androi…

【精选推荐】3款强大的API渗透测试工具

1免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测。 2前言 给大家介绍三款优秀的…

智能GPT图书管理系统(SpringBoot2+Vue2)、接入GPT接口,支持AI智能图书馆

☀️技术栈介绍 ☃️前端主要技术栈 技术作用版本Vue提供前端交互2.6.14Vue-Router路由式编程导航3.5.1Element-UI模块组件库&#xff0c;绘制界面2.4.5Axios发送ajax请求给后端请求数据1.2.1core-js兼容性更强&#xff0c;浏览器适配3.8.3swiper轮播图插件&#xff08;快速实…

VR拍摄+制作

1.VR制作需要的图片宽高是2:1&#xff0c;需要360✖️180的图片&#xff0c;拍摄设备主要有两种&#xff1a; 1&#xff09;通过鱼眼相机拍摄&#xff0c;拍摄一组图片&#xff0c;然后通过PTGui来合成(拍摄复杂) 2&#xff09;全景相机&#xff0c;一键拍摄直接就能合成需要的…

C# Graphics对象学习

Graphics对象用于进行绘制&#xff1b; 从哪个对象获取的Graphics&#xff0c;然后进行绘制&#xff0c;就绘制到该对象上&#xff1b; 从位图获取Graphics&#xff0c;然后进行绘制&#xff0c;绘制到该位图上&#xff1b; 从某个控件获取Graphics&#xff0c;然后绘制&…

智慧文旅:提升旅游体验与推动经济发展的新动力

一、智慧文旅的定义与意义 智慧文旅&#xff0c;即智慧文化旅游&#xff0c;是一种以当地特色文化元素为核心驱动&#xff0c;利用现代科技手段实现旅游景区全面智慧升级的旅游模式。其意义在于为游客提供高效便捷的旅游信息化服务&#xff0c;提升旅游体验&#xff0c;同时推…

蓝桥杯备战——6.串口通讯

1.分析原理图 由上图我们可以看到串口1通过CH340接到了USB口上&#xff0c;通过串口1我们就能跟电脑进行数据交互。 另外需要注意的是STC15F是有两组高速串口的&#xff0c;而且可以切换端口。 2.配置串口 由于比赛时间紧&#xff0c;我们最好不要去现场查寄存器手册&#x…