当前位置: 首页 > news >正文

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控件介绍及使用示例。

相关文章:

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 添加元素…...

优雅的python(二)

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;c语言从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于c语言的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &#x…...

Git安装详细步骤

目录 1、双击安装包&#xff0c;点击NEXT​编辑 2、更改安装路径&#xff0c;点击NEXT 3、选择安装组件 4、选择开始菜单页 5、选择Git文件默认的编辑器 6、调整PATH环境 7、选择HTTPS后端传输 8、配置行尾符号转换 9、配置终端模拟器与Git Bash一起使用 10、配置额外…...

首发:2024全球DAO组织发展研究

作者&#xff0c;张群&#xff08;专注DAO及区块链应用研究&#xff0c;赛联区块链教育首席讲师&#xff0c;工信部赛迪特邀资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09; DAO&#xff08;去中心化自治组织&am…...

【大数据】详解 Flink 中的 WaterMark

详解 Flink 中的 WaterMark 1.基础概念1.1 流处理1.2 乱序1.3 窗口及其生命周期1.4 Keyed vs Non-Keyed1.5 Flink 中的时间 2.Watermark2.1 案例一2.2 案例二2.3 如何设置最大乱序时间2.4 延迟数据重定向 3.在 DDL 中的定义3.1 事件时间3.2 处理时间 1.基础概念 1.1 流处理 流…...

【数据结构1-2】二叉树

树形结构不仅能表示数据间的指向关系&#xff0c;还能表示出数据的层次关系&#xff0c;而有很明显的递归性质。因此&#xff0c;我们可以利用树的性质解决更多种类的问题。 但是在平常的使用中&#xff0c;我们并不需要使用这么复杂的结构&#xff0c;只需要建立一个包含int r…...

ajax点击搜索返回所需数据

html 中body设置&#xff08;css设置跟进自身需求&#xff09; <p idsearch_head>学生信息查询表</p> <div id"div_1"> <div class"search_div"> <div class"search_div_item"> …...

Redis6基础知识梳理~

初识NOSQL&#xff1a; NOSQL是为了解决性能问题而产生的技术&#xff0c;在最初&#xff0c;我们都是使用单体服务器架构&#xff0c;如下所示&#xff1a; 随着用户访问量大幅度提升&#xff0c;同时产生了大量的用户数据&#xff0c;单体服务器架构面对着巨大的压力 NOSQL解…...

在Python中如何使用集合进行元素操作

目录 1. 创建集合 2. 添加或删除元素 3. 集合运算 4. 其他集合操作 总结 在Python中&#xff0c;集合&#xff08;set&#xff09;是一种基本的数据结构&#xff0c;用于存储无序且唯一的元素。这意味着集合中的每个元素都是独一无二的&#xff0c;且集合不保持任何元素的…...

2024年阿里云幻兽帕鲁Palworld游戏服务器优惠价格表

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…...

Atlassian Confluence Data Center and Server 权限提升漏洞复现(CVE-2023-22515)

0x01 产品简介 Atlassian Confluence是一款由Atlassian开发的企业团队协作和知识管理软件,提供了一个集中化的平台,用于创建、组织和共享团队的文档、知识库、项目计划和协作内容。是面向大型企业和组织的高可用性、可扩展性和高性能版本。 0x02 漏洞概述 Atlassian Confl…...

打开 IOS开发者模式

前言 需要 1、辅助设备&#xff1a;苹果电脑&#xff1b; 2、辅助应用&#xff1a;Xcode&#xff1b; 3、准备工作&#xff1a;苹果手机 使用数据线连接 苹果电脑&#xff1b; 当前系统版本 IOS 17.3 通过Xcode激活 两指同时点击 Xcode 显示选择&#xff0c;Open Develop…...

【C语言刷题系列】交换两个变量的三种方式

文章目录 1.使用临时变量&#xff08;推荐&#xff09; 2.相加和相减的方式&#xff08;值较大时可能丢失数据&#xff09; 3.按位异或运算 本文所属专栏C语言刷题_倔强的石头106的博客-CSDN博客 两个变量值的交换是编程中最常见的问题之一&#xff0c;以下将介绍三种变量的…...

架构师之路(十五)计算机网络(网络层协议)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 ARP协议 地址解…...

【JSON2WEB】03 go的模板包html/template的使用

Go text/template 是 Go 语言标准库中的一个模板引擎&#xff0c;用于生成文本输出。它使用类似于 HTML 的模板语言&#xff0c;可以将数据和模板结合起来&#xff0c;生成最终的文本输出。 Go html/template包实现了数据驱动的模板&#xff0c;用于生成可防止代码注入的安全的…...

3 JS类型 值和变量

计算机对value进行操作。 value有不同的类型。每种语言都有其自身的类型集合。编程语言的类型集是该编程语言的基本特性。 value需要保存一个变量中。 变量的工作机制是变成语言的另一个基本特性。 3.1概述和定义 JS类型分为&#xff1a; 原始类型和对象类型。 原始类型&am…...

【Android】实现简易购物车功能(附源码)

先上结果&#xff1a; 代码&#xff1a; 首先引入图片加载&#xff1a; implementation com.github.bumptech.glide:glide:4.15.1配置权限清单&#xff1a; <!-- 网络权限 --><uses-permission android:name"android.permission.INTERNET"/><uses…...

使用Excel计算--任务完成总工作日时间段

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 引言 计算任务完成时间周期&#xff0c;和计算金钱一样&#xff0c;是一个比较细致严谨的工作。 通常&#xff0c;我们可能以为&#xff0c;完成周期形如&#xff1a; 任务完成周期 任务结束时间 - 任务开始时间 但是…...

.NET高级面试指南专题一【委托和事件】

在C#中&#xff0c;委托&#xff08;Delegate&#xff09;和事件&#xff08;Event&#xff09;是两个重要的概念&#xff0c;它们通常用于实现事件驱动编程和回调机制。 委托定义&#xff1a; 委托是一个类&#xff0c;它定义了方法的类型&#xff0c;使得可以将方法当作另一个…...

基于springboot+vue的在线教育系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...