Форум сайта python.su
Есть код:
# -*- 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
Офлайн
print text.get_buffer().insert_at_cursor(sheet.cell_value(0,0))
Офлайн
PuppyА на пальцах объяснишь?А что делаете с помощью этой строки.. ? толи печатаете, толи вставляете значение в поле. ;)) нужно делать чтото одно.print text.get_buffer().insert_at_cursor(sheet.cell_value(0,0))
Офлайн
dugarsheet.cell_value(0,0) - возвращает float для данной ячейки
А на пальцах объяснишь?
Офлайн
sheet.cell_value(0,0) - возвращает float для данной ячейкиСпасибо за разъяснение!
insert_at_cursor - хочет аргументом строку
Офлайн
Продолжу тему, чтобы не плодить новые :)
Код тот же что и был сверху + приведение к str
Содержимое ячейки выводится в TextView(), далее происходит редактирование и теперь нужно сохранить обратно в ячейку. Как сохранить произвольное значение ясно. Вопрос: как занести содержимое TextView() в TextBuffer() (или всетаки Clipboard?) Пробовал использовать .get_start_iter() и .get_bounds(), но никак не могу понять принцип указания TextIter! Или есть другие варианты?
Спасибо.
Офлайн
Продолжу тему, чтобы не плодить новые :)
Код тот же что и был сверху + приведение к str
Содержимое ячейки выводится в TextView(), далее происходит редактирование и теперь нужно сохранить обратно в ячейку. Как сохранить произвольное значение ясно. Вопрос: как занести содержимое TextView() в TextBuffer() (или всетаки Clipboard?) Пробовал использовать .get_start_iter() и .get_bounds(), но никак не могу понять принцип указания TextIter! Или есть другие варианты?
Спасибо.
Офлайн
Вопрос снят. Решение:
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
Офлайн