Во-первых, вам необходимо связать model
свойство второго рендера из модели, например:
gtk.TreeViewColumn ('...', gtk.CellRendererCombo (), text = N, model = M)
где M
- номер столбца, в котором хранятся модели (вероятно, gtk.ListStore
). Или используйте любой другой метод привязки свойств из столбцов модели.
Затем подключитесь к сигналу changed
первого рендерера. В обратном вызове вам необходимо соответственно изменить модель, используемую для комбо второго рендерера (т.е. значение в столбце M
). Могу поспорить, что вы можете использовать одни и те же модели в разных строках, то есть одну для чисел, одну для букв, не создавая больше, но я не уверен. Другими словами, обратный вызов может выглядеть примерно так (store
- это основной gtk.ListStore
, X
- это столбец со значением первого комбо):
def combo1_changed (combo, path, iter):
main_iter = store.get_iter (path)
selected = store.get_value (main_iter, X)
if selected == 'Alphabet':
store.set_value (main_iter, M, alphabet_list_store)
elif selected == 'Numbers':
store.set_value (main_iter, M, number_list_store)
...