基本上,您必须使用 GtkTreeView 并将其“模型”属性设置为包含您的数据的 GtkListStore。GtkTreeView 使用 GtkTreeSelection 类管理选择。使用 gtk_tree_view_get_selection(或在 ruby-gtk 中映射到的任何东西)来获取 GtkTreeSelection。并将选择模式设置为“多个”。
这是 Python 中的一个示例。在 Ruby/Gtk 中应该是类似的。
import pygtk
pygtk.require('2.0')
import gtk
import gobject
w = gtk.Window()
w.connect('destroy', lambda w:gtk.main_quit())
l = gtk.ListStore(gobject.TYPE_STRING)
l.append(('Vinz',))
l.append(('Jhen',))
l.append(('Chris',))
l.append(('Shynne',))
treeview = gtk.TreeView()
treeview.set_model(l)
column = gtk.TreeViewColumn()
cell = gtk.CellRendererText()
column.pack_start(cell)
column.add_attribute(cell,'text',0)
treeview.append_column(column)
treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
def print_selected(treeselection):
(model,pathlist)=treeselection.get_selected_rows()
print pathlist
treeview.get_selection().connect('changed',lambda s: print_selected(s))
w.add(treeview)
w.show_all()
gtk.main()