[pygtk] Find string within TextBuffer
Steve McClure
smcclure at racemi.com
Fri Mar 13 21:23:42 WST 2009
On Mar 13, 2009, at 6:52 AM, Lupine wrote:
> Hello all,
>
> I've read over:
> http://www.pygtk.org/pygtk2tutorial/sec-TextBuffers.html
> http://www.pygtk.org/pygtk2tutorial/sec-TextIters.html
> ...but I'm not finding what I'm looking for, which is probably really
> simple for someone out there. If you can point me to another tutorial
> were this is covered, or example code..either would be much
> appreciated.
>
> I have a simple Python/PyGTK/Glade application, which has a
> gtk.TextView
> that contains some text from the gtk.TextBuffer. Upon the click of
> the
> "find" button, how can I scroll through each line of the buffer
> looking
> for the entered string. This is what I got so far:
>
> def on_find_dialog_ok_button_clicked(self, action):
> """This will highlight each found entry"""
> findentry = self.widgets.get_widget('find_entry').get_text()
> txtbuffer = self.widgets.get_widget('pref_hosts_txtview').get_buffer()
> startiter = txtbuffer.get_start_iter()
> enditer = txtbuffer.get_end_iter()
> bufferlines = txtbuffer.get_text(startiter, enditer)
I think the iterator points to characters in a string, not strings in
a list. If so you would just need something like:
bufferstr = txtbuffer.get_text(startiter, enditer)
if findentry in bufferstr:
print 'found entry:'
> for bufferline in bufferlines:
> print "looking at " + bufferline
> if (re.search(findentry, bufferline)):
> print "found entry: " + bufferline
> print "all done looking"
>
> The result, is that it is printing each character (one char at a time)
> on each separate line, which explains why my search is failing. So
> what
> is the proper way to look through each line for str?
>
> Thanks,
> -Lup
>
> _______________________________________________
> pygtk mailing list pygtk at daa.com.au
> http://www.daa.com.au/mailman/listinfo/pygtk
> Read the PyGTK FAQ: http://faq.pygtk.org/
>
>
>
--
Steve McClure
smcclure at racemi.com
More information about the pygtk
mailing list