Frage

Ich versuche, eine Mehrfachauswahl-Listenfeld in Lichtung / Ruby-Programm zu machen, und ich frage mich, wie ich über das tun dies gehen, wie das, was Element ich zum Fenster hinzufügen und das entsprechende Beispiel-Code kann ich verwenden. Ich war auf der Suche auf GTKList aber es sagt, es ist jetzt veraltet, und auch ich weiß nicht, wie es zu bekommen in Ruby zu arbeiten. GTK Liste docs sagt TreeView zu verwenden, aber ich habe keine Ahnung, wie das einzurichten.

Just klar sein, würde ich so etwas wie dieses mögen, wo der Benutzer mehrere Einträge auswählen können:

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

Vielen Dank für die Hilfe Jungs! Ich bin in dieser Frage wirklich verzweifelt.

War es hilfreich?

Lösung

Grundsätzlich haben Sie GtkTreeView zu nutzen und deren „Modell“ Eigenschaft auf einen GtkListStore, die Ihre Daten enthalten. GtkTreeView verwaltet Auswahl mit GtkTreeSelection Klasse. Verwenden Sie gtk_tree_view_get_selection (oder was auch immer es ist abgebildet in Rubin-gtk) die GtkTreeSelection zu bekommen. Und stellen Sie den Auswahlmodus auf „mehr“.

Hier ist ein Beispiel in Python. In Ruby / Gtk sollte es ähnlich sein.

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

Andere Tipps

Die obige Antwort ist richtig, aber wenn Sie es visualruby es mit geschrieben wäre viel einfacher:

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

Das würde alles genau wie Ihr Vorbild, darunter den Titel.

Dann fügen Sie es einfach in eine Box oder scrolledwindow:

class GUI

  include GladeGUI

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

end

Gehe zu:

http://www.visualruby.net

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top