Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 17, 2011 07:02:04

m.meehalkoff
От:
Зарегистрирован: 2011-01-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос о gtk.Textbuffer

Всем доброго времени суток.
Подскажите плз, как, зная номер строки, получить содержимое этой строки из textbuffer'a?



Офлайн

#2 Фев. 17, 2011 14:46:06

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос о gtk.Textbuffer

Можно вот так:

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()



Офлайн

#3 Фев. 18, 2011 04:01:13

m.meehalkoff
От:
Зарегистрирован: 2011-01-21
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос о gtk.Textbuffer

Не совсем то, что хотелось.
Вот пример того, что хотелось получить:

# -*- 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()
Может есть способ сделать это более правильно?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version