LINUX.ORG.RU

[pygtk]Как сделать combo ячейки в gtk.TreeView

 


0

0

Сабж.
Очень хотелось бы пример на русском.

Что пытаюсь сделать:
Есть словарь параметров, словарь1 {параметр:значение}.
Собственно для редактирования параметров из этого словаря мне и нужен список на gtk.TreeView.
Есть словарь с описаниями, словарь2 {значение:описание}.
Словарь2 нужен для двух вещей.
1 - список возможных значений.
2 - удобочитаемое описание, которое и должно выводится в combobox'ах.

Т.е. получается таблица:

параметр1:значение
параметр2:значение
параметр3:значение
....

Которая должна отображаться так:
параметр1:описание[значение]
параметр2:описание[значение]
параметр3:описание[значение]

Где описание[значение] - и должен быть тот самый combobox.
Чтобы отображались описания, а менялись значения.

Буду рад Вашим советам о том как это реализовать.

★★★★★

Похоже, что нашел решение. Заключается оно в использовании gtk.TreeViewColumn.set_cell_data_func().
http://library.gnome.org/devel/pygtk/stable/class-gtktreeviewcolumn.html#meth...

Написал функцию, которая должна подставить текст описания в combobox:
def celldatamet (self, column, cell, model, iter, user_data=None):
cell.set_property('text',словарь2[model[iter][1]])

model соответствует словарю1.

Работает, т.е. в combobox'е появляется текст описания вместо текста значения.

Есть одно _большое_ _НО_:
Я ожидал (думаю, что это логично), что функция будет вызываться при создании ячейки, но ошибся.
Функция вызывается при каждом чихе: наведение мыши, щелчек, получение/потеря фокуса окно, изменение размеров окна,....
Т.е. прога только и делает, что вызывает эту функцию.

Это баг или фича?
Что делать?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

Получается так, что мне необходимо использовать gtk.TreeViewColumn.set_cell_data_func() для нескольких колонок, а не для одной, как предполагалось изначально.

Подскажите пожалуйста, что делать чтобы она вызывалась только при создании и изменении ячейки, а не при каждом чихе.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от welkam

Спасибо, но где там про set_cell_data_func?

ls-h ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.