Форум сайта python.su
Всем доброго времени суток.
Подскажите плз, как, зная номер строки, получить содержимое этой строки из textbuffer'a?
Офлайн
Можно вот так:
import gtk
class MyClass(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.set_size_request(300, 200)
self.connect("destroy", gtk.main_quit)
self.box = gtk.VBox()
self.add(self.box)
button = gtk.Button('get_line')
self.box.add(button)
button.connect("pressed",self.get_line)
self.textbuffer = gtk.TextBuffer()
iter=self.textbuffer.get_start_iter()
self.textbuffer.insert(iter, 'aaa\n')
self.textbuffer.insert(iter, 'bbb\n')
self.textview = gtk.TextView(self.textbuffer)
self.box.add(self.textview)
self.show_all()
def get_line(self,data):
start_iter=self.textbuffer.get_iter_at_line(0)
end_iter =self.textbuffer.get_iter_at_line(1)
print self.textbuffer.get_text(start_iter,end_iter)
if __name__ == '__main__':
MyClass()
gtk.main()
Офлайн
Не совсем то, что хотелось.
Вот пример того, что хотелось получить:
# -*- coding: utf-8 -*-
import gtk
class MyClass(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.set_size_request(300, 200)
self.connect("destroy", gtk.main_quit)
self.box = gtk.VBox()
self.add(self.box)
button = gtk.Button('get_line')
self.box.add(button)
button.connect("pressed",self.get_line)
self.textbuffer = gtk.TextBuffer()
iter=self.textbuffer.get_start_iter()
self.textbuffer.insert(iter, 'aaa\n')
self.textbuffer.insert(iter, 'bbb\n')
self.textview = gtk.TextView(self.textbuffer)
self.box.add(self.textview)
self.show_all()
def get_line(self,data):
# получаем метку текущего положения курсора
x = self.textbuffer.get_insert()
# получаем итератор метки
iter = self.textbuffer.get_iter_at_mark(x)
# получаем номер строки в которой находится курсор
line = iter.get_line()
# получаем содержимое буфера
start, end = self.textbuffer.get_bounds()
text = self.textbuffer.get_text(start, end)
# разделяем текст на строки и получаем содержимое текушей строки
text = text.split("\n")[line]
print text
if __name__ == '__main__':
MyClass()
gtk.main()
Офлайн