2016-08-18 65 views
0

我有一个包含很多项目(行)的列表框。每个项目可能有自己的背景颜色,配置$my_listbox itemconfigure my_index -background some_color。是否有任何选项可以一次重置所有项目的背景,而不是迭代所有项目?目前,它是非常耗时的任务...Tcl/Tk listbox为所有项目配置背景

我的Windows7上运行Tk的8.5.14

+0

什么是您的版本和平台? –

回答

1

它不应该采取这一长期改变项目的背景在列表框中,除非你在列表框中有太多的项目(它不像无限的缩放,就像大多数GUI元素一样),或者你正在运行事件循环(可能通过做一个updateupdate idletasks)来设置项目的背景。这是因为Tk通常推迟重绘这个小部件,直到它不再忙于运行你的回调,这使得重绘似乎马上发生。该项目的所有重新配置实际上都是在内存中设置一条记录,并安排稍后重新绘制(如果管道中没有一个已经存在),那真的很快;它被设计成在机器上的速度比目前的任何桌面或移动系统慢得多。

列表框大多不支持组操作(插入,删除和检索除外,但这些都是特殊情况)。

如果根本问题是您要放入太多物品,则必须切换到其他小部件。例如,text小部件的缩放比例更好,前提是不要使用很长的行(或关闭文字换行)。它还支持更复杂的模型,以便如何通过其命名标签系统重新配置事物。

+0

删除'update'可以解决这个问题。谢谢! –