在GTK TextView中搜索文本的Python方法
我查了一下,觉得这个问题应该很简单,但不知道为什么我只找到了一部分我需要的内容。
我做了一个文本编辑器,有一个框可以输入文字,程序会帮我找出问题。但现在的问题是,它只能找到文本视图中的第一个单词,无法继续搜索下一行。就像文本文件中的查找功能一样。
def search(found):
search_str = findentry.get_text()
start_iter = textbuffer.get_start_iter()
found = start_iter.forward_search(search_str,0, None)
if found:
match_start,match_end = found
textbuffer.select_range(match_start,match_end)
我本以为可以做一个“搜索下一个”的按钮,让它向前继续搜索,并且在搜索时加一个变量+1。请问我该如何让它可以向前和向后搜索呢?
1 个回答
0
你现在使用的是 get_start_iter()
,这个函数会返回文本缓冲区的第一个位置。可能你想从 match_end
开始,这个位置是你第一次搜索时单词结束的地方,也就是说,你应该从这里开始。
假设你返回的是 found
,并且再次用这个参数调用 search
,那么可以把这一行替换为:
start_iter = textbuffer.get_start_iter()
替换成:
start_iter = found[1] if found else textbuffer.get_start_iter()
第一次,或者每次你想重新开始搜索时,可以传入 found=None
。