有人可以解释如何将语法高亮添加到Tkinter Text
小部件吗?
每次程序找到匹配的单词时,它会将该单词的颜色设置为我想要的颜色。例如:将单词tkinter
标记为粉红色,将in
标记为蓝色。但是当我输入Tkinter
时,它会以黄色显示Tk--ter
,将蓝色显示为in
。
我该如何解决这个问题?谢谢!
答案 0 :(得分:1)
使用tags。我将实施那里给出的概念。
示例:强>
import tkinter as tk
root = tk.Tk()
root.title("Begueradj")
text = tk.Text(root)
# Insert some text
text.insert(tk.INSERT, "Security ")
text.insert(tk.END, " Pentesting ")
text.insert(tk.END, "Hacking ")
text.insert(tk.END, "Coding")
text.pack()
# Create some tags
text.tag_add("one", "1.0", "1.8")
text.tag_add("two", "1.10", "1.20")
text.tag_add("three", "1.21", "1.28")
text.tag_add("four", "1.29", "1.36")
#Configure the tags
text.tag_config("one", background="yellow", foreground="blue")
text.tag_config("two", background="black", foreground="green")
text.tag_config("three", background="blue", foreground="yellow")
text.tag_config("four", background="red", foreground="black")
#Start the program
root.mainloop()
<强>演示:强>
答案 1 :(得分:1)
这是 igwd's answer 的后续。 idlelib.colorizer.ColorDelegator
和 idlelib.percolator.Percolator
似乎没有很好的记录,所以我决定发布我发现的内容。
如果您想突出显示诸如“tkinter”和“in”之类的词,您可能需要普通的 Python 语法突出显示和一些附加内容。
import idlelib.colorizer as ic
import idlelib.percolator as ip
import re
import tkinter as tk
root = tk.Tk()
root.title('Python Syntax Highlighting')
text = tk.Text(root)
text.pack()
cdg = ic.ColorDelegator()
cdg.prog = re.compile(r'\b(?P<MYGROUP>tkinter)\b|' + ic.make_pat(), re.S)
cdg.idprog = re.compile(r'\s+(\w+)', re.S)
cdg.tagdefs['MYGROUP'] = {'foreground': '#7F7F7F', 'background': '#FFFFFF'}
# These five lines are optional. If omitted, default colours are used.
cdg.tagdefs['COMMENT'] = {'foreground': '#FF0000', 'background': '#FFFFFF'}
cdg.tagdefs['KEYWORD'] = {'foreground': '#007F00', 'background': '#FFFFFF'}
cdg.tagdefs['BUILTIN'] = {'foreground': '#7F7F00', 'background': '#FFFFFF'}
cdg.tagdefs['STRING'] = {'foreground': '#7F3F00', 'background': '#FFFFFF'}
cdg.tagdefs['DEFINITION'] = {'foreground': '#007F7F', 'background': '#FFFFFF'}
ip.Percolator(text).insertfilter(cdg)
root.mainloop()
答案 2 :(得分:0)
您可以使用tag
执行此操作。您可以将标记配置为具有特定背景,字体,文本大小,颜色等。然后将这些标记添加到要配置的文本中。
所有这些都在documentation。
答案 3 :(得分:0)
这些代码可以在IDLE中实现语法高亮。 您可以复制源代码并修改某些内容。
import tkinter as tk
from idlelib.percolator import Percolator
from idlelib.colorizer import ColorDelegato
main = tk.Tk()
text = tk.Text(main)
text.pack()
Percolator(text).insertfilter(ColorDelegator())
main.mainloop()