Python - Gtk.TreeView与复选框

1 投票
1 回答
2768 浏览
提问于 2025-04-18 14:48

我需要在Gtk TreeView中存储一些项目,当用户与这个TreeView互动时,可以选择列表中的一个或多个项目。

因为我刚接触GTK,所以我成功地填充了TreeView,并显示了一个复选框,代码如下所示。但当我尝试选择时,什么也没有发生,我不知道该怎么做才能实现这个功能。

这是我的代码:

# 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)

1 个回答

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
    

撰写回答