在文本中查找字符串位置(Python、TkInter)

Dav*_*son -2 python tk-toolkit tkinter

如何在我的文本中找到特定文本字符串的位置?

例如,我有文本“Lorem ipsum dolor sat amet, consectetur adipiscing elit.”,当我搜索“ipsum”时,我想找出它的位置。

if "ipsum" in text:
    print position


else:
    pass
Run Code Online (Sandbox Code Playgroud)

我正在寻找的位置类似于“1.6”如果我想更改文本的颜色,它看起来像这样:

text.tag_add("foo", "1.28", "1.39")
Run Code Online (Sandbox Code Playgroud)

然后为了改变我搜索过的文本的颜色,我需要以某种方式获得它的位置,对吗?我可能是错的,但我正在寻找一些示例或指导。谢谢!:)

mha*_*wke 5

使用该Text.search()功能,例如

text = Text(root)
text.insert(INSERT, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
pos = text.search('ipsum', '1.0', stopindex=END)
print pos
Run Code Online (Sandbox Code Playgroud)

这应该输出1.6.

要突出显示目标字符串,您可以使用tag_add()tag_config()...

root = Tk()
text = Text(root)
text.pack()
text.insert(INSERT, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
target = 'ipsum'
start_pos = text.search(target, '1.0', stopindex=END)
print '{!r}'.format(start_pos)
if start_pos:
    end_pos = '{}+{}c'.format(start_pos, len(target))
    print '{!r}'.format(end_pos)
    text.tag_add('highlight', start_pos, end_pos)
    text.tag_config('highlight', foreground='red')

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

如果您想在文本小部件中搜索某个单词的所有实例,或多个单词,请查看此答案:https : //stackoverflow.com/a/29316232/21945