在gtk.TextView中查找文本

0xA*_*xAX 4 python gtk pygtk

我有一个gtk.Textview。我想以TextView编程方式找到并选择一些文本。我有此代码,但无法正常工作。

search_str =  self.text_to_find.get_text()
start_iter =  textbuffer.get_start_iter() 
match_start = textbuffer.get_start_iter() 
match_end =   textbuffer.get_end_iter() 
found =       start_iter.forward_search(search_str,0, None) 
if found: 
   textbuffer.select_range(match_start,match_end)
Run Code Online (Sandbox Code Playgroud)

如果找到了文本,那么它将选择中的所有文本TextView,但是我需要它仅选择找到的文本。

小智 5

start_iter.forward_search返回开始和结束比赛的元组让你的found变量都match_startmatch_end

这应该使其工作:

search_str =  self.text_to_find.get_text()
start_iter =  textbuffer.get_start_iter()
# don't need these lines anymore
#match_start = textbuffer.get_start_iter() 
#match_end =   textbuffer.get_end_iter() 
found =       start_iter.forward_search(search_str,0, None) 
if found:
   match_start,match_end = found #add this line to get match_start and match_end
   textbuffer.select_range(match_start,match_end)
Run Code Online (Sandbox Code Playgroud)