Ruby Glade/GTK에서 다중 선택 목록 상자를 만드는 방법, 아마도 TreeView를 사용하는 방법은 무엇입니까?

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

문제

Glade/Ruby 프로그램에서 다중 선택 목록 상자를 만들려고 노력하고 있으며 창에 추가하는 요소와 사용할 수있는 해당 예제 코드와 같이이 작업을 수행하는 방법이 궁금합니다. 나는 gtklist를보고 있었지만 지금은 더 이상 사용되지 않았다고 말하며 루비에서 작동하는 방법을 모르겠습니다. GTK 목록 Docs는 TreeView를 사용한다고 말하지만이를 설정하는 방법은 모르겠습니다.

분명히, 나는 사용자가 여러 항목을 선택할 수있는 이와 같은 것을 원합니다.

Alt Text http://geekswithblogs.net/images/geekswithblogs_net/dotnetvinz/outputpreselectlistbox.jpg

도움을 주셔서 감사합니다! 나는이 질문에 정말로 필사적이다.

도움이 되었습니까?

해결책

기본적으로 GTKTreeView를 사용하고 "모델"속성을 데이터를 포함하는 GTKListStore로 설정해야합니다. gtktreeview는 gtktreeSelection 클래스로 선택을 관리합니다. gtktreeSelection을 얻으려면 gtk_tree_view_get_selection (또는 Ruby-GTK에 맵핑 된)을 사용하십시오. 선택 모드를 "배수"로 설정합니다.

파이썬의 예는 다음과 같습니다. 루비/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

그것은 제목을 포함하여 당신의 예와 똑같은 모든 것을 설정합니다.

그런 다음 상자에 추가하거나 스크롤링하는 것만 큼 :

class GUI

  include GladeGUI

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

end

이동 :

http://www.visualruby.net

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top