python tkinter Listbox用法

python tkinter组件的Listbox的用法,见下面代码的演示:

 

 1 from tkinter import *
 2 
 3 root=Tk()
 4 v=StringVar()
 5 #Listbox与变量绑定'
 6 lb1=Listbox(root,listvariable=v)
 7 v.set(('10','20','30','40','50'))
 8 print(v.get())
 9 lb1.pack()
10 
11 #.创建一个可以多选的Listbox,使用属性selectmaod'
12 lb2=Listbox(root,selectmode=MULTIPLE)
13 for item in range(10):
14     lb2.insert(END,str(item))
15 #  有两个特殊的值ACTIVE和END,ACTIVE是向当前选中的item前插入一个
16 # (即使用当前选中的索引作为插入位置);END是向
17 #  Listbox的最后一项添加插入一项
18 
19 lb2.delete(1,3)
20 #删除全部内容,使用delete指定第一个索引值0和最后一个参数END,即可
21 lb2.pack()
22 
23 #这个属性selectmode还可以设置为BROWSE,可以通过鼠标来移动Listbox中的选中位置
24 # (不是移动item),
25 #这个属性也是Listbox在默认设置的值,这个程序与1.程序运行的结果的一样的
26 scrollbar=Scrollbar(root)
27 scrollbar.pack(side=RIGHT,fill=Y)
28 lb3=Listbox(root,selectmode=BROWSE,yscrollcommand=scrollbar.set)
29 for item in range(20):
30     lb3.insert(END,str(item))
31     lb3.pack(side=LEFT,fill=BOTH)
32 scrollbar.config(command=lb3.yview)
33 
34 #将一个垂直方向的Scrollbar和listboxs/canvases/text fields这些控件结合起来,
35 # 你只需要按照下面的步骤即可:
36 #1.将这些控件的yscrollcommand选项设置为scrollbar的set方法。
37 #2.将scrollbar的command选项设置为这些控件的yview方法。
38 
39 print(lb3.size())
40 print(lb3.get(3))
41 print(lb3.get(3,7))
42 lb3.selection_set(0,10)
43 lb3.selection_clear(0,3)
44 lb3.pack()
45 
46 
47 def printlist(event):
48     print(lb4.get(lb4.curselection()))
49 
50 
51 #使用selectmode  = EXPANDED使用Listbox来支持Shift和Control
52 lb4=Listbox(root,selectmode=EXTENDED)
53 lb4.bind('<Double-Button-1>',printlist)
54 for item in ['python','tkinter','widget']:
55     lb4.insert(END,item)
56 lb4.pack()
57 
58 
59 root.mainloop()

 再来一个实例:

在下面这个例子中,点击Listbox的项目,输出索引号。

 

 1 from tkinter import *
 2 
 3 class make_list(Listbox):
 4     def __init__(self,master, **kw):
 5         frame = Frame(master)
 6         frame.pack()
 7         self.build_main_window(frame)
 8 
 9         kw['selectmode'] = SINGLE
10         Listbox.__init__(self, master, kw)
11         master.bind('<Button-1>', self.click_button)
12         master.curIndex = None
13 
14     def click_button(self, event):
15         ##this block works
16         w = event.widget
17         index = int(w.curselection()[0])
18         value = w.get(index)
19         print(value)
20         ##this doesn't
21         self.curIndex = self.nearest(event.y)
22         print(self.curIndex)
23         self.curIndex = event.widget.nearest(event.y)
24         print(self.curIndex)
25 
26     #display the window, calls the listbox
27     def build_main_window(self, frame):
28         self.build_listbox(frame)
29 
30     #listbox
31     def build_listbox(self, frame):
32         listbox = Listbox(frame)
33         for item in ["one", "two", "three", "four"]:
34             listbox.insert(END, item)
35         listbox.insert(END, "a list entry")
36         listbox.pack()
37         return
38 
39 if __name__ == '__main__':
40     tk = Tk()
41     make_list(tk)
42     tk.mainloop()

 

如果对于Tkinter的事件绑定不太熟悉,可以参见下面这篇教程:

python tkinter教程-事件绑定

 

转载于:https://www.cnblogs.com/hackpig/p/8146518.html

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

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

相关文章

我的世界javamod怎么装_「装修细节」除了中央空调外的高颜值装空调大法

一直觉得中央空调是高颜值神器但是对于我这种万年单身狗在考虑开启率的情况下好像还是风管机和挂机比较实用但是又嫌弃挂机的电线冷凝水管丑到不行直到我看到了-----管线背出的挂机仿佛开启了新世界的大门| 怎么做到的 |我问了好多卖中央空调的有没有管线背出的挂机都和我说不清…

在Spring Rest模板中跳过SSL证书验证

使用Spring Rest模板时如何跳过SSL证书验证&#xff1f; 配置Rest Template&#xff0c;以便它使用Http Client创建请求。 注意&#xff1a;如果您熟悉sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested ta…

新手上路之django项目开发(二)-----mysql数据库配置及其增删改查操作

1&#xff0c;数据库配置&#xff08;settings.py文件配置&#xff09; 我这里用的是本地数据库。 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: information,USER: root,PASSWORD: ,HOST: 127.0.0.1,PORT: 3306,} }NAME是数据库名称&#xff0c;USER是MYS…

C#编程高并发的几种处理方法

并发&#xff08;英文Concurrency&#xff09;&#xff0c;其实是一个很泛的概念&#xff0c;字面意思就是“同时做多件事”&#xff0c;不过方式有所不同。在.NET的世界里面&#xff0c;处理高并发大致有以下几种方法&#xff1a; 1&#xff0c;异步编程 异步编程就是使用futu…

lua检测表中是否有某个值_Lua检测数组(tabble)中是否包含某个值

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis协议标准的、提供持久化的内存数据…

rm删除文件显示:Operation not permitted

当需要删除某个文件夹或者文件时&#xff0c;提示Operation not permitted&#xff0c;表示不允许操作。 解决方法如图 chattr -i .user.ini 注释&#xff1a; rm -rf 目录名字 &#xff1a;删除 -r 就是向下递归&#xff0c;不管有多少级目录&#xff0c;一并删除 -f 就是直…

sublime 代码格式化

插件&#xff1a; SublimeAStyleFormatter Package Control Messages SublimeAStyleFormatter---------------------- SublimeAStyleFormatter SublimeAStyleFormatter is a simple code formatter plugin for Sublime Text 2. It provides ability to format C, C, C#, and J…

xslt 标签取集合第一条数据_1+x证书Web前端开发中级理论考试(试卷1)

2019年下半年 Web前端开发中级 理论考试 (考试时间19:00-20:30 共150分钟&#xff0c;测试卷1) 本试卷共3道大题&#xff0c;满分100分。请在指定位置作答。一、单选题(每小题2分&#xff0c;共30小题&#xff0c;共60分) 1、a标签中哪一个属性是表示跳转路径的(B) A&#xff…

glassfish5_将Glassfish 3连接到外部ActiveMQ 5代理

glassfish5介绍 在ONVZ&#xff0c;我们将Glassfish 3用作开发和生产应用服务器&#xff0c;我们对其性能和稳定性以及周围的广大社区感到非常满意。 我很少遇到在stackoverflow或java.net上没有匹配解决方案的问题。 作为我们开源策略的一部分&#xff0c;我们还运行了一个定制…

Linux下安装并使用MySQL数据库

注意&#xff1a;如果是配合python使用的话&#xff0c;连接数据库的时候注意python2使用的是mysqldb&#xff0c;python3使用的是pymysql。详细看第三点。 一&#xff0c;首先设置安全组 开放MySQL的默认端口3306 二&#xff0c;安装MySQL服务 在官网查找最新版本的下载链…

Vue 2.0 入门系列(15)学习 Vue.js 需要掌握的 es6 (2)

类与模块 类 es6 之前&#xff0c;通常使用构造函数来创建对象 // 构造函数 User function User(username, email) { this.username username; this.email email; } // 为了让实例共享方法&#xff0c;将其添加到原型上 User.prototype.changeEmail function(newEmail) { th…

Windows下安装并使用MySQL数据库

MySQL是一款免费开源的关系型数据库&#xff0c;很多中小型企业开发项目都选择使用MySQL数据库&#xff0c;所以大家也在优先选择学习MySQL数据库。 一&#xff0c;安装 1.打开MySQL下载地址&#xff0c;MySQL官方下载地址https://dev.mysql.com/downloads/mysql/。 2.选择自…

您的第一个Lagom服务– Java Microservices入门

在撰写我的下一份OReilly报告时&#xff0c;我一直很沮丧&#xff0c;而且一段时间内没有足够的时间来撰写博客。 是时候赶快来这里&#xff0c;让您真正快速地开始使用名为Lagom的新微服务框架。 它与您从Java EE或其他应用程序框架中可能了解到的有所不同。 这对您来说是学习…

android 记录路线轨迹_基于百度地图SDK记录运动轨迹

标签 &#xff1a; 运动轨迹 百度地图SDK最终实现的效果如下图所示###注意1&#xff1a;模拟器上模拟要设置好Location(如果选择None就无法定位了),同时第一次打开应用会提示授权使用地理位置信息,点击允许即可。设置效果图1注意2:由上图的经纬度反查可知这是美国的一个州&…

用户体验

我正在使用的是搜狗输入法。 一&#xff0e;用户界面&#xff1a;搜狗输入法页面较为美观不会是用户感到反感&#xff0c;适合大多数人群使用。 二&#xff0e;比如我长期输入自己的名字张子祥&#xff0c;到时候只需输入zzx就可以直接输出很方便。 三&#xff0e;操作简便&…

转先验概率、最大似然估计、贝叶斯估计、最大后验概率

最大似然估计&#xff1a; 最大似然估计提供了一种给定观察数据来评估模型参数的方法&#xff0c;即&#xff1a;“模型已定&#xff0c;参数未知”。简单而言&#xff0c;假设我们要统计全国人口的身高&#xff0c;首先假设这个身高服从服从正态分布&#xff0c;但是该分布的均…

animate.css动画样式详解

一、使用步骤 <!-- <link rel"stylesheet" href"https://www.jq22.com/jquery/animate-3.1.0.min.css"> --> <link rel"stylesheet" href"animate.css"> <div class"animated bounceInLeft">从左边…

osgi 模块化_OSGi案例研究:模块化vert.x

osgi 模块化OSGi使Java代码可以清晰地划分为多个模块&#xff0c;这些模块称为捆绑软件 &#xff0c;可以访问由每个捆绑软件的类加载器控制的代码和资源。 OSGi 服务提供了一种附加的分离机制&#xff1a;接口的用户无需依赖于实现类&#xff0c;工厂等。 以下案例研究旨在使O…

两个常数的卷积为多少_卷积(Convolution)与好核函数(Good Kernel)

把最近在分析里学到的有趣的东西整理写一写&#xff0c;初学者不专业。我们先来简单介绍Rudin的数学分析里Stone-Weierstrass定理的证明[1]。Stone-Weierstrass定理&#xff1a;对于任意定义在 上的连续&#xff08;continuous&#xff09;函数 &#xff0c;总存在一个多项式函…

Font Awesome(一套绝佳的图标字体库和CSS框架)(icon图标)

官网&#xff1a;https://fontawesome.dashgame.com/ 一、步骤 1、到官网下载 2、将以下代码粘贴到网页HTML代码的 部分 <link href"css/font-awesome.min.css" rel"stylesheet">3、 <i class"fa fa-camera-retro"></i> f…