0

我环顾四周,我认为这真的很简单,由于某种原因,我只找到了我需要的部分。

我已经制作了一个文本编辑器,并且我有一个输入框,它会发现问题是它只会在文本视图中找到第一个单词,而我无法让它搜索下一行。就像文本文档中的查找功能。

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。我怎样才能让它向前和向后搜索。

4

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.

于 2013-02-21T06:34:10.123 回答