Tkinter:列表框的更新频率

时间:2018-10-30 15:17:15

标签: python tkinter listbox

是否可以控制列表框小部件的更新频率?现在,我经常进行大量插入和删除操作,并且列表框的刷新效果不是很好。也许有一种方法可以替代列表框的某些绘制功能来解决此问题?

1 个答案:

答案 0 :(得分:1)

我无法找到一种方法来禁用列表框的可视更新,因此我不得不解决。如果有人知道您是否可以禁用列表框的可视更新,请告诉我。

我的解决方法将涉及一个列表和2个功能。

我的第一个功能将获取要添加到列表框中的数据,而不是将其添加到列表中。此函数只是简单地模拟了新值的添加速度,该值比我们想要更新的值快得多,以使方法具有更好的外观。您可以将此代码修改为适合自己的代码,以查看其如何与插入代码一起使用。

我的第二个函数将每秒运行一次,并获取该列表的所有新值,然后按索引将它们添加到列表框中。

这是一个简单的示例,但对您来说应该是一个很好的起点。

import tkinter as tk


root = tk.Tk()
add_tracker = 1
new_lb_items = []

lb = tk.Listbox(root)
lb.pack()


def add_to_listbox():
    global add_tracker, new_lb_items, root
    new_lb_items.append([add_tracker, "Number {}".format(add_tracker)])
    add_tracker += 1
    root.after(250, add_to_listbox)

def update_listbox_display():
    global lb, new_lb_items, root
    for item in new_lb_items:
        lb.insert(item[0], item[1])
    new_lb_items = [] # resets the list so only new values are added next time.
    root.after(1000, update_listbox_display)

add_to_listbox()
update_listbox_display()

root.mainloop()