Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2010 13:28:01

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

Есть код:

# -*- coding: utf-8 -*-
import gtk
from xlutils.copy import copy
from xlrd import open_workbook

def b_click (b):
print text.get_buffer().insert_at_cursor(sheet.cell_value(0,0))
w = gtk.Window(gtk.WINDOW_TOPLEVEL)
w.set_size_request(300, 200)
w.set_border_width(10)
w.connect("destroy", quit)
b = gtk.Button("View")
b.connect('clicked', b_click)
b.show()
text = gtk.TextView()
buffer = gtk.TextBuffer()
text.set_justification(gtk.JUSTIFY_CENTER)
text.set_wrap_mode(gtk.WRAP_WORD_CHAR)

rb = open_workbook('7.xls')
sheet = rb.sheet_by_index(0)

t = gtk.Table(5, 5, True)
t.attach(b, 1, 2, 3, 5)
t.attach(text, 0, 5, 0, 3)
w.add(t)
t.show()
w.show_all()

gtk.main()
Ошибка:
TypeError: GtkTextBuffer.insert_at_cursor() argument 1 must be string or read-only buffer, not float
Подскажите почему так? Что то я смысл понять не могу.



Офлайн

#2 Окт. 8, 2010 18:25:11

Puppy
От:
Зарегистрирован: 2010-02-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

 print text.get_buffer().insert_at_cursor(sheet.cell_value(0,0))
А что делаете с помощью этой строки.. ? толи печатаете, толи вставляете значение в поле. ;)) нужно делать чтото одно.



Офлайн

#3 Окт. 12, 2010 11:29:44

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

Puppy
 print text.get_buffer().insert_at_cursor(sheet.cell_value(0,0))
А что делаете с помощью этой строки.. ? толи печатаете, толи вставляете значение в поле. ;)) нужно делать чтото одно.
А на пальцах объяснишь?



Офлайн

#4 Окт. 12, 2010 16:39:49

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

dugar
А на пальцах объяснишь?
sheet.cell_value(0,0) - возвращает float для данной ячейки
insert_at_cursor - хочет аргументом строку
надо привести к строке, хотя бы так str(sheet.cell_value(0,0))



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Окт. 12, 2010 17:15:59

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

sheet.cell_value(0,0) - возвращает float для данной ячейки
insert_at_cursor - хочет аргументом строку
Спасибо за разъяснение!



Офлайн

#6 Окт. 15, 2010 14:34:30

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

Продолжу тему, чтобы не плодить новые :)
Код тот же что и был сверху + приведение к str
Содержимое ячейки выводится в TextView(), далее происходит редактирование и теперь нужно сохранить обратно в ячейку. Как сохранить произвольное значение ясно. Вопрос: как занести содержимое TextView() в TextBuffer() (или всетаки Clipboard?) Пробовал использовать .get_start_iter() и .get_bounds(), но никак не могу понять принцип указания TextIter! Или есть другие варианты?
Спасибо.



Офлайн

#7 Окт. 15, 2010 14:56:30

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

Продолжу тему, чтобы не плодить новые :)
Код тот же что и был сверху + приведение к str
Содержимое ячейки выводится в TextView(), далее происходит редактирование и теперь нужно сохранить обратно в ячейку. Как сохранить произвольное значение ясно. Вопрос: как занести содержимое TextView() в TextBuffer() (или всетаки Clipboard?) Пробовал использовать .get_start_iter() и .get_bounds(), но никак не могу понять принцип указания TextIter! Или есть другие варианты?
Спасибо.



Офлайн

#8 Окт. 16, 2010 11:37:17

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

xlrd xlutils gtk.TextView()

Вопрос снят. Решение:

def b_click1 (b):
ptext=text_from_clipboard()
wb.get_sheet(0).write(0,0,ptext)
os.remove('1.xls')
wb.save('1.xls')
def text_from_clipboard():
clipboard=gtk.Clipboard(display=gtk.gdk.display_get_default(), selection="CLIPBOARD")
start, end = buffer.get_bounds()
buffer.select_range(start, end)
ptext=text.get_buffer().copy_clipboard(clipboard)
ptext=clipboard.wait_for_text()
clipboard.store()
return ptext



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version