Как сделать подсветку синтаксиса в tkinter?

Пользователь

от hobart.rath , в категории: Python , месяц назад

Как сделать подсветку синтаксиса в tkinter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от roma , месяц назад

@hobart.rath 

В tkinter нативно нет поддержки подсветки синтаксиса. Однако, вы можете использовать сторонние библиотеки, такие как tkinterdnd2 или Pygments, чтобы достичь подсветки синтаксиса в tkinter.


Ниже приведен пример использования библиотеки Pygments для подсветки синтаксиса в tkinter:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import tkinter as tk
from tkinter.ttk import *
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import TkinterFormatter

def highlight_syntax(event):
    code = text.get("1.0", "end-1c")
    highlighted_code = highlight(code, PythonLexer(), TkinterFormatter())
    text.tag_add("highlighted", "1.0", "end")
    text.mark_set("insert", "1.0")
    text.delete("1.0", "end")
    text.insert("insert", highlighted_code)
    text.tag_config("highlighted", background="#f0f0f0", foreground="#000000")

root = tk.Tk()
text = tk.Text(root)
text.pack()

text.bind("<KeyRelease>", highlight_syntax)

root.mainloop()


Этот пример использует Pygments для подсветки синтаксиса языка Python в виджете Text в tkinter. В функции highlight_syntax код из виджета Text получается и обрабатывается с помощью Pygments. Результат подсветки синтаксиса затем помещается обратно в виджет Text.


Обратите внимание, что для использования Pygments вам нужно будет установить его с помощью pip:

1
pip install pygments


Также, учтите, что подсветка синтаксиса может повлиять на производительность при работе с большими объемами текста.