Отказ от ответственности : я уверен, что это не полная bs, но в данный момент не могу проверить это.
Во-первых, CellRendererToggle не принимает текстовое свойство.во-вторых, если вы все равно установите его, вы не установите его на индекс столбца 7, потому что у вас есть только 7 столбцов в хранилище списков (а индекс 7 будет восьмым столбцом).
Вы можете видеть все доступныесвойства, которые вы можете установить для вашего рендерера в ссылка в «Свойствах» (обратите внимание также на унаследованные свойства).Теперь, чтобы установить свойство для каждой отдельной ячейки (для каждой строки), вы можете указать, как вы это сделали, аргумент ключевого слова.Таким образом, в вашем TreeviewColumn вы должны установить это:
# 5 is the index of bool in the liststore
gtk.TreeViewColumn('Fav',renderer,active=5)
Любой набор атрибутов, подобный этому, сопоставляется с соответствующей записью в списке списков.Это означает, что вы можете напрямую изменить его в хранилище списков или с помощью обратного вызова (например, on_toggle).
Редактировать:
Возможно, вам также нужно установить свойство режима
Редактировать 2:
Вот рабочий пример.
import gtk
def on_toggle(cell, path, model, *ignore):
if path is not None:
it = model.get_iter(path)
model[it][0] = not model[it][0]
model = gtk.ListStore(bool)
tv = gtk.TreeView(model)
cell = gtk.CellRendererToggle()
cell.connect("toggled", on_toggle, model)
col = gtk.TreeViewColumn("Foo", cell, active=0)
tv.append_column(col)
w = gtk.Window()
w.connect("destroy", gtk.main_quit)
w.show()
w.add(tv)
tv.show()
## Some initial data
model.append([True])
model.append([False])
gtk.main()