我可以在不使用循环的情况下将字符串列表添加到 Tkinter 列表框吗?

问题描述 投票:0回答:2

我试图了解最快的方法是将一堆以某种方式预先排列的字符串添加到列表框小部件中,以便每个字符串都在一个新行中。

迄今为止我能最快收集到的:

 from Tkinter import *

 strings= 'str1', 'str2', 'str3'
 listbox=Listbox(None)
 [listbox.insert(END, item) for item in strings]
 listbox.pack()

是否有一种更干净、更快的方法来完成它,而无需迭代每个字符串?也许字符串是以某种方式或使用其他方法预先打包的?

如果相关,我想用它来显示目录列表。

python optimization tkinter listbox
2个回答
6
投票

此代码插入集合中的所有字符串:

listbox.insert(END, *strings)

0
投票

问题没那么简单。在大多数情况下,您不会插入简单的字符串,而是插入由列表或元组的元素组成的格式化字符串。我用如下方式解决了这个问题。我插入例如首次填充列表框的 20 个项目,并向列表框添加了一个带有隐藏计数器(前景色和背景色相同的不可见标签)的 <> 事件。列表框立即被填满,没有任何等待时间,这对用户来说非常令人沮丧。 当您用鼠标输入列表框并且 label.cget("text") 是例如“0”用整个列表填充列表框。这需要时间,但用户认为这是正常的。确保标签的文本(计数器)必须更改为“1”或与前者不同的其他字符串。

© www.soinside.com 2019 - 2024. All rights reserved.