Tkinter: частота обновления списка - PullRequest
0 голосов
/ 30 октября 2018

Можно ли контролировать частоту обновления виджета Listbox? Сейчас я выполняю много операций вставки и удаления с высокой частотой, и список не обновляется очень хорошо. Может быть, есть способ переопределить какую-то функцию рисования списка, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 30 октября 2018

Я не могу найти способ отключить визуальные обновления вашего списка, поэтому мне пришлось обойти это. Если кто-то знает, можете ли вы отключить визуальное обновление списка, пожалуйста, дайте мне знать.

Мой обходной путь будет включать в себя список и 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...