我不太明白 text.search 方法是如何工作的。
比如有一句话:Today a red car appeared in the park.
我需要找到a red car
序列并突出显示它。它已找到,但我的突出显示如下所示:
我在用self.text.search(word, start, stopindex=END)
就句子而言。看起来搜索方法的工作方式与 python 的正则表达式搜索完全相同。添加exact=True
没有改变任何东西,因为它是默认行为,这就是为什么我不明白 exact=True 的实际含义。
怎么做a red car
突出显示正确吗?
搜索方法返回起始索引处或之后的第一个匹配项的索引,以及匹配的字符数(可选)。您有责任突出显示通过使用此信息发现的内容。
例如,考虑以下搜索:
countVar = tk.StringVar()
pos = text.search("a red car", "1.0", stopindex="end", count=countVar)
如果找到匹配项,pos
将包含匹配的第一个字符的索引和countVar
将包含匹配的字符数。您可以使用此信息通过使用“index + N chars”形式的索引或简写“index + Nc”来突出显示匹配项。例如,如果 pos 为 2.6,count 为 9,则匹配的最后一个字符的索引将为2.6+9c
这样,假设您已经配置了一个名为“search”的标签(例如:text.tag_configure("search", background="green")
),您可以将此标签添加到比赛的开头和结尾,如下所示:
text.tag_add("search", pos, "%s + %sc" (pos, countVar.get()))
要突出显示所有匹配项,只需将搜索命令放入循环中,并将起始位置调整为上一个匹配项末尾之后的一个字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)