¿Cómo hacer un cuadro de lista de selección múltiple en Ruby Glade / GTK, tal vez usando TreeView?

StackOverflow https://stackoverflow.com/questions/1210602

Pregunta

Estoy tratando de hacer un cuadro de lista de selección múltiple en el programa glade / ruby ??y me pregunto cómo hago para hacer esto, como qué elemento agrego a la ventana y el código de ejemplo correspondiente que puedo usar. Estaba mirando GTKList, pero dice que ahora está en desuso, y tampoco sé cómo hacerlo funcionar en rubí. Los documentos de la Lista GTK dicen que use TreeView, pero no tengo idea de cómo configurarlo.

Para ser claros, me gustaría algo como esto, donde el usuario puede seleccionar múltiples entradas:

texto alternativo http://geekswithblogs.net/images/geekswithblogs_net/dotNETvinlectLOutBoxvinlectz .JPG

¡Gracias por la ayuda chicos! Estoy realmente desesperado por esta pregunta.

¿Fue útil?

Solución

Básicamente, debe usar GtkTreeView y establecer su " model " propiedad de un GtkListStore que contiene sus datos. GtkTreeView gestiona la selección con la clase GtkTreeSelection. Use gtk_tree_view_get_selection (o lo que sea que esté asignado en ruby-gtk) para obtener GtkTreeSelection. Y configure el modo de selección en " multiple " ;.

Aquí hay un ejemplo en Python. En Ruby / Gtk debería ser similar.

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

Otros consejos

La respuesta anterior es correcta, pero si la escribiste usando visualruby sería mucho más fácil:

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

Eso establecería todo exactamente como su ejemplo, incluido el título.

Luego, simplemente lo agrega a un cuadro o ventana desplazada:

class GUI

  include GladeGUI

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

end

Ir a:

http://www.visualruby.net

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top