Найти - Пользователи
Полная версия: Вопрос о gtk.Textbuffer
Начало » GUI » Вопрос о gtk.Textbuffer
1
m.meehalkoff
Всем доброго времени суток.
Подскажите плз, как, зная номер строки, получить содержимое этой строки из textbuffer'a?
gmorgunov
Можно вот так:
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()
m.meehalkoff
Не совсем то, что хотелось.
Вот пример того, что хотелось получить:
# -*- 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()
Может есть способ сделать это более правильно?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB