3

私はグレード/ルビープログラムで複数選択リストボックスを作成しようとしています.ウィンドウに追加する要素や使用できる対応するサンプルコードなど、これをどのように行うのか疑問に思っています. 私はGTKListを見ていましたが、現在は廃止されていると書かれており、ルビーで動作させる方法もわかりません。GTK List のドキュメントでは TreeView を使用すると書かれていますが、その設定方法がわかりません。

明確にするために、ユーザーが複数のエントリを選択できる次のようなものが欲しいです。

代替テキスト http://geekswithblogs.net/images/geekswithblogs_net/dotNETvinz/OutputPreselectListBox.JPG

助けてくれてありがとう!私はこの質問に本当に必死です。

4

2 に答える 2

8

基本的に、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()
于 2009-07-31T04:43:38.443 に答える
-1

上記の答えは正しいですが、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

これにより、タイトルを含め、すべてが例とまったく同じになります。

次に、それをボックスまたはスクロールウィンドウに追加します。

class GUI

  include GladeGUI

  def initialize()
    load_glade(__FILE__)
    @builder("Scrolledwindow1").add(MyList.new)
    show_window()
  end

end

移動:

http://www.visualruby.net

于 2012-03-20T07:39:59.147 に答える