我环顾四周,我觉得这很简单,出于某种原因我只找到了我需要的部分。
我已经制作了一个文本编辑器,我有一个盒子,键入的内容会发现问题是它只会在文本视图中找到第一个单词,而我无法在下一行搜索它。 就像textdocument中的find函数一样。
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。 如何让它向前和向后搜索。
答案 0 :(得分: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
。