如何在Ruby Glade/GTK中创建一个多选列表框,也许可以使用TreeView?
我试图在glade/ruby程序中创建一个多选列表框,我想知道我是如何做到这一点的,比如我在窗口中添加了什么元素以及我可以使用的相应示例代码。我在看GTKList,但它说现在已经不推荐了,而且我也不知道如何让它在ruby中工作。GTK列表文档说要使用TreeView,但我不知道如何设置 为了清楚起见,我希望这样,用户可以选择多个条目:如何在Ruby Glade/GTK中创建一个多选列表框,也许可以使用TreeView?,ruby,listbox,gtk,pygtk,glade,Ruby,Listbox,Gtk,Pygtk,Glade,我试图在glade/ruby程序中创建一个多选列表框,我想知道我是如何做到这一点的,比如我在窗口中添加了什么元素以及我可以使用的相应示例代码。我在看GTKList,但它说现在已经不推荐了,而且我也不知道如何让它在ruby中工作。GTK列表文档说要使用TreeView,但我不知道如何设置 为了清楚起见,我希望这样,用户可以选择多个条目: 谢谢你们的帮助!在这个问题上我真的很绝望。基本上,您必须使用GtkTreeView并将其“model”属性设置为包含数据的GtkListStore。 GtkTr
谢谢你们的帮助!在这个问题上我真的很绝望。基本上,您必须使用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()
上面的答案是正确的,但如果您使用visualruby编写它,则会容易得多:
class MyList < VR::Listview
def initialize(:employee_names => String)
add_row(:employee_names => "Vince")
add_row(:employee_names => "Jhen")
add_row(:employee_names => "Chris")
add_row(:employee_names => "Shynne")
end
end
转到:
非常感谢您!我正在努力将它转换成ruby版本,希望我能让它正常工作!
class GUI
include GladeGUI
def initialize()
load_glade(__FILE__)
@builder("Scrolledwindow1").add(MyList.new)
show_window()
end
end