在GTK TextView中搜索文本的Python方法

0 投票
1 回答
834 浏览
提问于 2025-04-17 16:35

我查了一下,觉得这个问题应该很简单,但不知道为什么我只找到了一部分我需要的内容。

我做了一个文本编辑器,有一个框可以输入文字,程序会帮我找出问题。但现在的问题是,它只能找到文本视图中的第一个单词,无法继续搜索下一行。就像文本文件中的查找功能一样。

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

撰写回答