我想获得一种使用 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()
我想实现一个代码高亮的功能,但是不知道怎么用这个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()