讲解Tkinter文本搜索方法

2024-02-20

我不太明白 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(使用前将#替换为@)

讲解Tkinter文本搜索方法 的相关文章

随机推荐