如何在Ruby GladeGTK中利用TreeView构建一个功能丰富的多选列表框?

2026-04-11 20:062阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计579个文字,预计阅读时间需要3分钟。

如何在Ruby Glade/GTK中利用TreeView构建一个功能丰富的多选列表框?

在Glade和Ruby程序中创建多选列表框,您可以按照以下步骤操作:

1. 打开Glade设计器,创建一个新的窗口。

2.在窗口中添加一个GTK::CheckButtonMatrix控件,这相当于一个多选列表框。

3.在Glade中,您可以通过拖放按钮或菜单项来添加选项到CheckButtonMatrix中。

4.保存Glade文件,并使用Ruby生成相应的代码。

如何在Ruby Glade/GTK中利用TreeView构建一个功能丰富的多选列表框?

以下是一个简单的示例代码,展示如何使用Glade和Ruby创建一个多选列表框:

ruby

require 'gtk3'

class MultiSelectList 多选列表框示例)

# 创建一个CheckButtonMatrix,并设置行数和列数 @check_button_matrix=Gtk::CheckButtonMatrix.new(3, 2)

# 添加选项到CheckButtonMatrix @check_button_matrix.append(:text=> 选项1) @check_button_matrix.append(:text=> 选项2) @check_button_matrix.append(:text=> 选项3) @check_button_matrix.append(:text=> 选项4)

# 将CheckButtonMatrix添加到窗口中 self.add(@check_button_matrix)

# 显示窗口 self.show_all endend

window=MultiSelectList.newwindow.signal_connect(destroy) { Gtk.main_quit }Gtk.main

这段代码创建了一个包含四个选项的多选列表框,您可以根据需要修改选项内容。运行此代码后,您将看到一个包含多选列表框的窗口。

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

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

alt text 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()

本文共计579个文字,预计阅读时间需要3分钟。

如何在Ruby Glade/GTK中利用TreeView构建一个功能丰富的多选列表框?

在Glade和Ruby程序中创建多选列表框,您可以按照以下步骤操作:

1. 打开Glade设计器,创建一个新的窗口。

2.在窗口中添加一个GTK::CheckButtonMatrix控件,这相当于一个多选列表框。

3.在Glade中,您可以通过拖放按钮或菜单项来添加选项到CheckButtonMatrix中。

4.保存Glade文件,并使用Ruby生成相应的代码。

如何在Ruby Glade/GTK中利用TreeView构建一个功能丰富的多选列表框?

以下是一个简单的示例代码,展示如何使用Glade和Ruby创建一个多选列表框:

ruby

require 'gtk3'

class MultiSelectList 多选列表框示例)

# 创建一个CheckButtonMatrix,并设置行数和列数 @check_button_matrix=Gtk::CheckButtonMatrix.new(3, 2)

# 添加选项到CheckButtonMatrix @check_button_matrix.append(:text=> 选项1) @check_button_matrix.append(:text=> 选项2) @check_button_matrix.append(:text=> 选项3) @check_button_matrix.append(:text=> 选项4)

# 将CheckButtonMatrix添加到窗口中 self.add(@check_button_matrix)

# 显示窗口 self.show_all endend

window=MultiSelectList.newwindow.signal_connect(destroy) { Gtk.main_quit }Gtk.main

这段代码创建了一个包含四个选项的多选列表框,您可以根据需要修改选项内容。运行此代码后,您将看到一个包含多选列表框的窗口。

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

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

alt text 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()