2015-06-26 4 views
0

У меня есть такая строка -> [name], [mp3names], [suggest_names] Предлагаемый_имя список для combobox, и каждая строка имеет разные предложенные имена. Поэтому для них мне нужна сводка. но я не знаю, как это сделать.python-gtk cellrenderer combobox для каждой строки

изменить: Сначала я прочитал свой файл csv, затем добавлю все их в список, а затем обрабатываю все столбцы. У меня есть предложения для каждой строки, но я не знаю, как добавить эти предложения. Теперь я могу только один раз определить предложения и использовать для всех строк, но это неверно, мне нужны разные предложения для каждой строки. enter image description here

  for i in range(self.row_len): 
       outliers_list.append([str(self.columns[1][i])]+[str(self.columns[self.col_count-2][i])]+[str(self.columns[self.col_count-1][i])]+[corrected]+[audio_name]) 

      self.col_len = len(outliers_list[0]); 

    #dynamically liststore column adding 
      self.liststore = Gtk.ListStore(*([str] * 5)) 
    # You need to use self.fillStore() instead. 
      for item in outliers_list: 
       self.liststore.append(item) 
      liststore_suggestions = Gtk.ListStore(str) 
      suggestions = correct("axse") 
      for item in suggestions: 
       liststore_suggestions.append([item]) 


      renderer_text = Gtk.CellRendererText() 
      column = Gtk.TreeViewColumn("Name", renderer_text, text=0) 
      treeview.append_column(column) 

      renderer_text = Gtk.CellRendererText() 
      column = Gtk.TreeViewColumn("mp3Names", renderer_text, text=1) 
      treeview.append_column(column) 
      renderer_combo = Gtk.CellRendererCombo() 
      renderer_combo.set_property("editable", True) 
      renderer_combo.set_property("model",liststore_suggestions) 
      renderer_combo.set_property("text-column", 0) 
      renderer_combo.set_property("has-entry", True) 
      renderer_combo.connect("edited", self.on_combo_changed) 

      column_combo = Gtk.TreeViewColumn("Suggest", renderer_combo, text=2) 
      treeview.append_column(column_combo) 

здесь предложения = правильно ("axse") будет меняться для каждой строки, я только определил его для показа вам, правильный один ISE:

suggestions = correct(str(self.columns[1][i])) 

наконец, то, что я хочу меняет этот код, потому что он хранит только один список и использует его для каждой строки.

renderer_combo.set_property("model",liststore_suggestions) 

Но я хочу что-то подобное. Загрузка динамически списков combobox для каждой строки.

renderer_combo.set_property("model",liststore_suggestions[i]) 
+0

Можете ли вы опубликовать код, который создает списки магазинов? И, возможно, скриншот того, что вы хотите? Я не уверен, в чем проблема ... – andlabs

+0

@andlabs Привет, я добавил дополнительную информацию :) –

ответ

0

Наконец-то я нашел свой путь. Таким образом, на первый я добавил

select = self.treeview.get_selection() 
select.connect("changed", self.on_tree_selection_changed) 

Затем я добавил новую функцию. Он получает первое значение столбца строки и выполняет коррекцию, предлагает имена и обновляет combobox.

def on_tree_selection_changed(self, selection): 
    model, treeiter = selection.get_selected() 

    name = str(model[treeiter][0]) 
    liststore_suggestions = Gtk.ListStore(str) 
    suggestions = correct(name) 
    for item in suggestions: 
     liststore_suggestions.append([item]) 
    self.renderer_combo.set_property("model",liststore_suggestions) 
Смежные вопросы