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