当前位置 : 主页 > 编程语言 > ruby >

如何在Ruby Glade / GTK中创建多选列表框,也许使用TreeView?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我想在glade / ruby​​程序中创建一个多选列表框,我想知道我是怎么做的,比如我添加到窗口的元素和我可以使用的相应示例代码.我正在看GTKList,但它说它现在已被弃用,而且我也不知道如
我想在glade / ruby​​程序中创建一个多选列表框,我想知道我是怎么做的,比如我添加到窗口的元素和我可以使用的相应示例代码.我正在看GTKList,但它说它现在已被弃用,而且我也不知道如何让它在ruby中运行. GTK List文档说使用TreeView,但我不知道如何设置它.

为了清楚起见,我想要这样的东西,用户可以选择多个条目:

alt text http://geekswithblogs.net/images/geekswithblogs_net/dotNETvinz/OutputPreselectListBox.JPG

谢谢你的帮助!我对这个问题非常绝望.

基本上,您必须使用GtkTreeView并将其“model”属性设置为包含数据的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()
网友评论