我有一个包含许多项目(行)的列表框。每个项目可能具有自己的背景颜色,由$my_listbox itemconfigure my_index -background some_color
配置。是否有任何选项可以重置所有项目'背景,而不是迭代所有项目?目前,这是一项非常耗时的任务......
我在Windows7 Tk 8.5.14
上运行答案 0 :(得分:1)
更改列表框中项目的背景不应该花那么长时间,除非您在列表框中有太多项目(它不像大多数GUI元素那样无限扩展)或者您正在运行每次调用之间的事件循环(可能通过执行update
或update idletasks
)来设置项目的背景。这是因为Tk通常会推迟重新绘制窗口小部件,直到它不再忙于运行您的回调,从而使重绘看起来立即发生。项目的所有重新配置确实是在内存中设置记录并安排后面的重绘(如果没有已经在管道中),那真的很快;它被设计为在比任何当前桌面或移动系统慢得多的机器上快速运行。
列表框主要不支持组操作(插入,删除和检索除外,但这些都是特殊情况)。
如果根本问题是您放入了太多项目,则必须切换到其他小部件。例如,如果您不使用很长的行(或关闭自动换行),text
窗口小部件会更好地扩展。它还支持更复杂的模型,用于通过命名标签系统重新配置事物。