Python — Gtk.TreeView с флажком

Мне нужно хранить элементы в Gtk TreeView, и при взаимодействии с этим TreeView пользователь может выбрать один или несколько элементов в списке.

Поскольку я новичок в GTK, мне удалось заполнить древовидную структуру и отобразить флажок, как показано в приведенном ниже коде. Но когда я пытаюсь выбрать, ничего не происходит, и я не знаю, как сделать это возможным.

Это мой код:

# the column is created
renderer_products = gtk.CellRendererText()
column_products = gtk.TreeViewColumn("Products", renderer_products, text=0)
# and it is appended to the treeview
view.append_column(column_products)

# the column checkbox is created
renderer_checkbox = gtk.CellRendererToggle()
column_checkbox = gtk.TreeViewColumn("Selected", renderer_checkbox, text=0)
# and it is appended to the treeview
view.append_column(column_checkbox)

person Eduardo    schedule 25.07.2014    source источник


Ответы (1)


  1. Если вы хотите выбрать всю строку, и что-то произойдет:

    #double click or not double click use
    Gtk.TreeView.set_activate_on_single_click (bool)
    #connect the treeview
    treeview.connect ("row-activated", on_row_activate)
    #inside the callback
    def on_row_activate (treeview, path, column):
        model = treeview.get_model ()
        iter  = treeview.get_iter (path)
        yourdata = model[iter][model_index]
        #do whatever with yourdata
    
  2. Если вы хотите, когда вы нажимаете на переключатель, и что-то происходит:

    #connect the renderer
    renderer_checkbox.connect ("toggled", on_selected_toggled)
    #inside the callback
    def on_selected_toggled (renderer, path):
        #modify the model or get the value or whatever
    
person luciomrx    schedule 25.07.2014
comment
Спасибо, luciomrx. Но ваш второй совет не решает. Переключенный сигнал не существует в GetTreeViewColumn. - person Eduardo; 28.07.2014
comment
это не сигнал Gtk.TreeView, это Gtk.CellRendererToggle - person luciomrx; 29.07.2014