0

我正在为我的应用程序做“查找和替换按钮”。我正在使用 gtk 和 ruby​​。我可以找到多少字,如果有的话。我也想得到搜索词的选择词,我应该标记它们。我的一些代码:

def search(ent, txtvu)
start = txtvu.buffer.start_iter
first, last = start.forward_search(ent.text, Gtk::TextIter::SEARCH_TEXT_ONLY, nil)
count = 0
while (first)
mark = start.buffer.create_mark(nil, first, false)
txtvu.scroll_mark_onscreen(mark)
txtvu.buffer.delete_mark(mark)
txtvu.buffer.select_range(first, last)
start.forward_char
first, last = start.forward_search(ent.text, Gtk::TextIter::SEARCH_TEXT_ONLY, nil)
start = first
count += 1
end

count说我有多少字涉及我的代码不起作用。:( 为什么?我想标记所有搜索过的单词。

4

1 回答 1

0

如果我理解正确,您想突出显示所有找到的单词,而不仅仅是一个。在那种情况下,select_range不是要调用的函数,因为它将选择更改为当前单词,并且GtkTextView选择是单一且连续的。

相反,创建一个突出显示标签并将其应用于所有搜索。例如:

# create the "highlight" tag (run this only once)
textvu.buffer.create_tag("highlight", {background => "yellow"})

# ... later, in the loop:
textvu.buffer.apply_tag("highlight", first, last)

您的匹配项都将突出显示。

于 2013-03-02T08:47:45.090 回答