我想获得一种使用 python Tkinter Text 控件突出显示代码的方法

I want to get a way to highlight code using the python Tkinter Text control

我想实现一个代码高亮的功能,但是不知道怎么用这个tk.Text。(当然不一定python)

希望得到一个高亮函数f (x, y, z, a),其作用是将x行y列到z列高亮成a色。然后我也希望每次用户在文本控件中输入时,我都能收到消息并调用另一个函数t (x, y)来更新突出显示的内容。我希望得到这样的写作。 另外,我也不想使用第三方库来解决这个问题。我的参考代码如下。你可以修改我的代码来回答这个问题。

参考代码:

import tkinter as tk

window = tk.Tk()
window.geometry('600x600')
window.configure(bg='white')

content = tk.Text(window, relief='solid', font=('Consolas', 12))
content.pack()
content.place(x=15, y=15, width=570, height=535)

window.mainloop()

我的英语不是很好。我用机器翻译我的文字,所以它可能包含一些低级错误。

谢谢!

你应该使用搜索功能搜索你的单词的第一个索引,然后使用这个"%s+%sc"%(starting_index(你会在搜索功能的帮助下找到),长度为你的话)

如果你不想下载任何外部模块那么我建议你使用idlelib这是一个内置模块

你可以试试这个:-

import tkinter as tk
def highight_function(code_list):
    for i in code_list:
        content.tag_remove(i,"1.0",tk.END)
        starting_index = 1.0
        while True:
            pattern = r"\m{}\M".format(i)
            starting_index = content.search(pattern,starting_index,regexp=True,stopindex=tk.END)
            if not starting_index:
                break
            last_index = "%s+%sc"%(starting_index,len(i))
            content.tag_add(i,starting_index,last_index)
            starting_index = last_index
        content.tag_configure(i,foreground=code_list[i])
    window.after(1000,lambda :highight_function(code_list))


window = tk.Tk()
code_list = {"from":"cyan","as":"cyan","import":"cyan"}
window.geometry('600x600')
window.configure(bg='white')

content = tk.Text(window, relief='solid', font=('Consolas', 12))
content.pack()
content.place(x=15, y=15, width=570, height=535)
window.after(1000,lambda :highight_function(code_list))
window.mainloop()