How to set specific color for certain symbols like ,#,etc ‘ example if I type “” it’s color should be blue and other stay remain same.
typedecker sir i am binding you function like this but this is not working
from tkinter import*
root = Tk()
def check_for_symbols(symbol_dict) :
for i in symbol_dict :
text.tag_remove(i, '1.0', END)
pos = 1.0
while 1:
pos = text.search(i, pos, regexp = True, stopindex = END)
if not pos:
break
last_pos = '%s+%dc' % (pos, len(i)) # The only change
text.tag_add(i, pos, last_pos)
pos = last_pos
text.tag_config(i, foreground = symbol_dict[i])
root.after(1000, lambda:check_for_symbols(symbol_dict))
return
symbol_dict = {
"*":"blue"
}
text = Text(root, background = "gray19", foreground = "white", insertbackground = 'white',font="Consolas 15 italic")
text.pack(expand=True,fill=BOTH)
root.after(1000, lambda : check_for_symbols(symbol_dict))
root.mainloop()
Advertisement
Answer
The same procedure as followed in the case of words here by me, can be followed, the only change will be in the regex expression that is to be used to detect the symbols.
last_pos = '%s+%dc' % (pos, len(i)) # The only change
The full check_for_symbols function with the necessary changes in place will look like -:
def check_for_symbols(symbol_dict) : # pass symbol dict as argument using lambda construct.
# symbol dict format-: {keyword : color}
for i in symbol_dict :
text.tag_remove(i, '1.0', tk.END)
pos = 1.0
while 1:
pos = text.search(i, pos, regexp = True, stopindex = tk.END)
if not pos:
break
last_pos = '%s+%dc' % (pos, len(i)) # The only change
text.tag_add(i, pos, last_pos)
pos = last_pos
text.tag_config(i, foreground = symbol_dict[i])
root.after(1000, check_for_symbols)
return