python listbox排序_python – 从tkinter.Listbox中提取项目列表

我编写了以下tkinter脚本来了解如何将数据列表添加到tkinter.Listbox小部件中.我发现了两种方法.

接下来,我想从tkinter.Listbox小部件中提取相同的列表.在4种不同的方法中,我只设法让第4种方法(即e4)起作用.

如何使e1,e2和e3方法起作用?最终目标是获取最初提供给tkinter.Listbox小部件的相同列表.

测试脚本:

import tkinter as tk # Python 3 tkinter modules

import tkinter.ttk as ttk

class App(ttk.Frame):

def __init__(self, parent, *args, **kwargs):

# 1. Initialise Frame

ttk.Frame.__init__(self, parent)

self.parent = parent

# Method1

name1 = ['Peter', 'Scotty', 'Walter', 'Scott', 'Mary']

self.lb1_values = tk.StringVar(value=name1)

self.listbox1 = tk.Listbox(self, listvariable=self.lb1_values)

# Method2

self.listbox2 = tk.Listbox(self)

name2 = ['Sarah', 'Sean', 'Mora', 'Mori', 'Mary']

for item in name2:

self.listbox2.insert(tk.END, item)

self.listbox1.grid(in_=self, row=0, column=0, sticky='nsew')

self.listbox2.grid(in_=self, row=0, column=1, sticky='nsew')

# Extract values from listbox and covert to a list

e1 = self.lb1_values.get()

print('e1 = ', e1)

print('type(e1) = ', type(e1))

e1 = e1.strip(',')

print('e1 = ', e1)

e2 = self.listbox1.cget('listvariable')

print('\ne2 = ', e2)

print('type(e2) = ', type(e2))

e2 = e2.split(',')

print('e2 = ', e2)

e3 = self.listbox2.cget('listvariable')

print('\ne3 = ', e3)

print('type(e3) = ', type(e3))

e4 = self.listbox2.get(0, tk.END)

print('\ne4 = ', e4)

print('type(e4) = ', type(e4))

e4 = list(e4)

print('e4 = ', e4)

if __name__ == '__main__':

root = tk.Tk()

root.title('App'), root.geometry('400x200')

app = App(root)

app.grid(row=0, column=0, sticky='nsew')

#root.mainloop()

输出:

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

type(e1) =

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

e2 = PY_VAR0

type(e2) =

e2 = ['PY_VAR0']

e3 =

type(e3) =

e4 = ('Sarah', 'Sean', 'Mora', 'Mori', 'Mary')

type(e4) =

e4 = ['Sarah', 'Sean', 'Mora', 'Mori', 'Mary']

解决方法:

您不能将StringVar用作listvariable属性的目标.正如您的代码所示,这会导致列表转换为字符串.

但是,你可以做的是使用tk.Variable的一个实例. Variable是StringVar的基类. get的基本实现不会将值强制转换为字符串.

name1 = ['Peter', 'Scotty', 'Walter', 'Scott', 'Mary']

self.lb1_values = tk.Variable(value=name1)

self.listbox1 = tk.Listbox(self, listvariable=self.lb1_values)

...

e1 = self.lb1_values.get()

print('e1 = ', e1)

print('type(e1) = ', type(e1))

print('e1 = ', e1)

以上产生了这个输出:

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

type(e1) =

e1 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

对于e2和e3,你必须跳过额外的箍.遗憾的是,cget方法返回内部变量名而不是对变量对象的引用.要按名称获取变量的值,您需要使用widget方法getvar.

例如:

e2 = self.listbox1.cget('listvariable')

print('\ne2 = ', e2)

print('type(e2) = ', type(e2))

print('e2 = ', self.getvar(e2))

以上产生了这个输出:

e2 = PY_VAR0

type(e2) =

e2 = ('Peter', 'Scotty', 'Walter', 'Scott', 'Mary')

标签:python,listbox,tkinter

来源: https://codeday.me/bug/20190607/1195248.html

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

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

相关文章

学号20145209《信息安全系统设计基础》第11周学习总结

学号20145209《信息安全系统设计基础》第11周学习总结 教材学习内容总结 教材学习内容总结 第八章 异常控制流 1、从给处理器加电开始,直到断点为止,程序计数器假设一个值的序列 a0,a1,……,an-1 每个ak是某个相应的指…

别让猴子跳回背上摘抄

1. 源源不断的猴子 管理者的贡献来自于他们的判断力与影响力,而非他们个人投入的时间长短与埋头苦干的程度。 他们掌控时间的方式,和那些非管理者对于时间管理的考虑大不相同——后者的贡献主要来自于时间与努力。 对于非管理者而言,时间管…

linux之学习linux系统相关的书籍

1.《鸟哥的Linux私房菜-基础学习篇》 2.《Linux Shell 脚本攻略》 3.《Unix环境高级编程》 4.《Linux系统编程》

16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!

全世界只有3.14 % 的人关注了爆炸吧知识本文转自:募格学术魏嘉,16岁考上南大,25岁博士毕业,是南大医学院最年轻的博导,已在J Natl Cancer Inst等国际著名杂志上发表64篇SCI论文。在第24届“中国青年五四奖章”入围名单…

十年整理CAD精髓

为什么80%的码农都做不了架构师?>>> AUTOCAD使用心得之一 使用的三个基本方面:清晰、准确、高效 目前,公司的设计文件,特别是图纸,都是用AUTOCAD软件绘制的。但是,现在还有很多人对CAD并不是…

Oracle免客户端InstantClient安装使用

正常情况下,用PL/SQL等软件连接Oracle,需要安装Oracle客户端软件,一般安装oracle客户端差不多需要2G左右的硬盘空间,但如果我们仅仅是连接数据库进行查询和执行一些相应的语句而不进行相应开发,那么oracle客户端就显得…

使用这个库,让你的服务操作 Redis 速度飞起

点击上方蓝字关注 👆👆没领红包封面的可以在文末领取大多数人使用 Redis 作为远程缓存存储,因为它速度快。Redis6 通过消除不必要的网络往返,可以使其更快。服务器辅助的客户端缓存这个方法很简单。Redis6 会记录客户端请求的键值…

mysql bigint转string_无语了,直到今天,我才揪出MySQL磁盘消耗迅猛的“真凶”!...

作者:dbapower链接:https://blog.51cto.com/suifu/2135599背景Part1:写在最前当一张单表10亿数据量的表放在你面前,你将面临着什么?Part2:背景介绍为了提升数据库资源利用率,一个实例中,在不互相影响&#…

linux之sed命令详解

sed命令详解: sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到…

mysql导入sql脚本命令

2019独角兽企业重金招聘Python工程师标准>>> 使用mysql自带的命令行工具导入sql脚本如下&#xff1a; mysql -h localhost -u root -proot -v -Ddbname < dbname.sql 转载于:https://my.oschina.net/u/2450094/blog/795488

媒体层图形技术之AssetsLibrary 学习笔记

choudang的专栏转载自 http://m.blog.csdn.net/blog/choudang/28274519 1.ALAsset ALAsset类代表相册中的每个资源文件&#xff0c;可以通过它获取资源文件的相关信息还能修改和新建资源文件 Asset Properties – valueForProperty: (1.ALAssetPropertyType 资源的类型&…

jenkins构建触发器定时任务

接上篇Jenkins发布.Net项目到IIS前面说到了把项目部署到iis,那么这边有个问题就是这个部署的触发条件是手工还是需要自动的呢。我觉得这个的看具体的场景&#xff0c;假设团队人员比较多&#xff0c;不断的在提交代码到指定分支&#xff0c;如果是自动化的话&#xff0c; 那么基…

JavaScript基于对象编程

2019独角兽企业重金招聘Python工程师标准>>> JavaScript基于对象编程 1、JavaScript变量/函数声明在代码执行之前被解析&#xff0c;并且变量声明优先级高于函数声明。 代码片段&#xff1a; 1234567var flag test in window;if (!flag){ var te…

idae 安装的插件怎么删掉_X7 IE阻止我安装插件怎么办

为了在网页上表现多彩的多媒体内容&#xff0c;很多网站会要求我们装上相应的网页插件来实现。但IE的默认安全设置会阻止我们进行安装某些网页插件。可是如果不装的话&#xff0c;网页很多媒体的内容就会显示不出来。怎么办呢&#xff1f;其实我们可以调整IE的安全设定来解决。…

MongoDB基本管理命令

2019独角兽企业重金招聘Python工程师标准>>> MongoDB是一个NoSQL数据库系统&#xff1a;一个数据库可以包含多个集合&#xff08;Collection&#xff09;&#xff0c;每个集合对应于关系数据库中的表&#xff1b;而每个集合中可以存储一组由列标识的记录&#xff0c…

桥接模式下的手机-电脑-开发板连接

操作系统Ubuntu14.04 1.桥接方法参照上篇 2. a.手机与电脑的连接 sudo add-apt-repository ppa:nilarimogard/webupd8 $ sudo apt-get update $ sudo apt-get install ap-hotspot $ sudo ap-hotspot configure //这一步会检查ubuntu的网络和WIFI接口&#xff0c;确定后会提示你…

花季少女竟然有个三年级老公??!

1 不能直视咖啡了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 不理外国人的后果&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 猫占鸡巢&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 律师有什么坏心思呢&#xff1f;&#xff08;素材…

linux之awk命令

1、awk解释 awk是linux环境下的一个命令行工具,但是由于awk强大的能力,我们可以为awk工具传递一个字符串,该字符串的内容类似一种编程语言的语法,我们可以称其为Awk语言我们一般使用awk来做什么,awk又适合做什么工作呢。由于awk天生提供对文件中文本分列进行处理,所以如…