我正在构建一个程序,该程序在用户编写文本小部件时突出显示某些单词。
到目前为止,所有程序都可以正常工作,只是该程序会在单词中突出显示单词,而且我不知道如何使其不这样做。
from tkinter import *
root = Tk()
frame = Frame(root)
frame.grid(row=0, column=0, sticky="nsew")
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
textbox = Text(frame,width=100, height=10)
textbox.grid(row=1, column=7, columnspan=10)
textbox.tag_config("vegetables", foreground='green')
textbox.tag_config("fruits", foreground='red')
def search(textbox, keyword, tag):
pos = '1.0'
while True:
idx = textbox.search(keyword, pos, END, nocase=True)
if not idx:
break
pos = '{}+{}c'.format(idx, len(keyword))
textbox.tag_add(tag, idx, pos)
def search2(event):
for word in vegetables:
search(textbox, word, "vegetables")
for word in fruits:
search(textbox, ordet, "fruits")
textbox.bind("<space>", search2)
frame.mainloop()
我在这里使用“蔬菜”和“水果”作为示例,以使程序的功能更直观。
我要解决的问题可以通过以下句子来说明,该句子说明了程序如何在另一个单词中识别出蔬菜,这意味着其他含义:
“我想要的只是豌豆地上的ce”
感谢您的帮助!
答案 0 :(得分:1)
添加regexp=True
选项,然后使用\y
匹配单词边界。
def search(textbox, keyword, tag):
pos = '1.0'
while True:
idx = textbox.search(fr'\y{keyword}\y', pos, END, nocase=True, regexp=True)
if not idx:
break
pos = '{}+{}c'.format(idx, len(keyword))
textbox.tag_add(tag, idx, pos)