Оптимизация подсветки синтаксиса pygments

Нашёл на форуме такой вопрос с ответом на него: Как сделать подсветку синтаксиса в tkinter

Воспользовался таким же подходом, но сразу увидел неудобства: набор текста очень теперь с фризами. Удалил часть кода, отвечающую за удаление тегов. Помогло, но не сильно. Подскажите пожалуйста, как можно решить эту проблему.


Ответы (1 шт):

Автор решения: insolor

Если нужно просто рабочее решение, используйте модуль tkcode.

Пример ниже создает и отображает 10000 строк, есть задержка несколько секунд, пока создастся содержимое, но при прокрутке никаких фризов нет:

import tkinter as tk
from tkcode import CodeEditor

root = tk.Tk()

code_editor = CodeEditor(root, highlighter="dracula")
code_editor.pack(fill="both", expand=True)
code_editor.content = "Текст создается..."

root.update()  # Принудительно заставляем окно отобразиться

code_editor.content = "\n".join(f"print({i})" for i in range(10000))

root.mainloop()

Скриншот

→ Ссылка