Tkinter:列表框的更新频率
Tkinter: Update frequency of Listbox
是否可以控制列表框小部件的更新频率?现在我频繁地进行大量插入和删除操作,列表框刷新得不是很好。也许有一种方法可以覆盖列表框的某些绘制功能来解决此问题?
我无法找到一种方法来禁用您的列表框的视觉更新,因此我不得不构建一个解决方法。如果有人知道您是否可以禁用列表框的视觉更新,请告诉我。
我的解决方法将涉及一个列表和 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()
是否可以控制列表框小部件的更新频率?现在我频繁地进行大量插入和删除操作,列表框刷新得不是很好。也许有一种方法可以覆盖列表框的某些绘制功能来解决此问题?
我无法找到一种方法来禁用您的列表框的视觉更新,因此我不得不构建一个解决方法。如果有人知道您是否可以禁用列表框的视觉更新,请告诉我。
我的解决方法将涉及一个列表和 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()