كيفية جعل مربع متعددة تحديد قائمة في روبي الفسحة / GTK، ربما باستخدام تريفيف؟

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

سؤال

واني اسعى لجعل مربع القائمة متعددة حدد في الفسحه برنامج / روبي وأنا أتساءل كيف أذهب عن القيام بذلك، على غرار ما عنصر أود أن أضيف إلى النافذة ورمز المثال المقابلة I يمكن استخدامها. كنت أبحث في GTKList لكنه يقول هو مستنكر عليه الآن، وأيضا أنا لا أعرف كيفية الحصول على عمل في روبي. وتقول قائمة GTK مستندات لاستخدام تريفيف، ولكن ليس لدي أي فكرة عن كيفية إعداد ذلك.

ومجرد أن تكون واضحة، وأود شيئا من هذا القبيل، حيث يمكن للمستخدم تحديد مداخل متعددة:

نص بديل http://geekswithblogs.net/images/geekswithblogs_net/dotNETvinz/OutputPreselectListBox .JPG

وشكرا للمساعدة رجال! أنا يائسة حقا بشأن هذه المسألة.

هل كانت مفيدة؟

المحلول

وأساسا، لديك لاستخدام GtkTreeView ووضع لها "نموذج" الخاصية إلى GtkListStore التي تحتوي على البيانات الخاصة بك. GtkTreeView يدير التحديد مع الطبقة GtkTreeSelection. استخدام gtk_tree_view_get_selection (أو كل ما تم تعيينه إلى في روبي جتك) للحصول على GtkTreeSelection. وتعيين وضع التحديد إلى "متعددة".

وهنا مثال في بيثون. في روبي / جتك ينبغي أن تكون مشابهة.

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

وهذا سيحدد كل شيء تماما مثل المثال الخاص بك، بما في ذلك العنوان.

وبعد ذلك تضيف إلى مربع، أو scrolledwindow:

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