2013-02-21 48 views
0

我環顧四周,我認爲這很簡單,出於某種原因,我只能找到我需要的部分。python在gtk文本視圖中搜索文本

我做了一個文本編輯器,我有一個盒子,鍵入的內容會發現問題是,它只會在文本視圖中找到第一個單詞並且我無法獲取它以搜索下一行。 就像文本文檔中的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

您正在使用get_start_iter(),它返回文本緩衝區中的第一個位置。可能你想從match_end開始,這是第一次搜索中單詞結束的位置,也就是說,你應該從那裏開始。通過

start_iter = found[1] if found else textbuffer.get_start_iter() 

start_iter = textbuffer.get_start_iter() 

第一次,或當你想重置搜索:

假設你正在返回found並與參數再次調用search,則可以代替線,你可以通過found=None

+0

對於遲到的回覆,我很抱歉。你的指示看起來很簡單,但你可以舉一個更詳細的例子。 – ApertureSecurity 2013-03-17 04:03:10