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

时间:2015-05-06 12:58:48

标签: python tkinter tk

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

例如,我有文字" Lorem ipsum dolor sit amet,consectetur adipiscing elit。",当我搜索" ipsum"我想找出它的位置。

if "ipsum" in text:
    print position


else:
    pass

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

text.tag_add("foo", "1.28", "1.39")

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

1 个答案:

答案 0 :(得分:4)

使用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

这应输出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()

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