Glade 3 (gtk) と ruby を使用して GUI を作成しようとしていますが、文字列のリストなどを使用して実際にコンボ ボックスを動的に設定する方法がわかりません。Glade で GUI を視覚的に作成した後、xml .glade ファイルを取得し、ruby-glade-create-template を使用して .rb ファイルを生成しましたが、ここからどこに行けばよいかわかりません。Glade 3 で Ruby を使用する方法に関するガイドが見つかりません。助けていただければ幸いです。ありがとう!
3 に答える
visualruby を使用した場合、次のようなコンボボックスを作成できます。
combo = VR::SimpleComboBoxEntry("Selected", "Option1", "option2", "Option3")
@builder["vbox1"].add(combo)
何らかの理由で、Glade は単純なコンボボックスでは機能しません。単純なテキスト タイプを選択すると、xml ファイルに正しく保存されません。したがって、必要なことは、1 つのセルを含む VBox または HBox を、コンボボックスを配置したい空き地フォームに配置し、上記のボックスを VBox に追加することです。上記の例では、@builder は Gtk::Builder のインスタンスです。
より多くの例があります:
.rb ファイルを生成する必要があるのはなぜですか? コード生成は Frowned upon™ です。それでは、 Gtk::Builderインスタンスを使用してグレード ファイルをロードしますか? Builder オブジェクトを取得したら、get_objectメソッドを呼び出して特定のウィジェットを取得します。
これはグレード 3に関する非常に優れたチュートリアルです。Rubyはカバーしていませんが、Python は十分に近いものです。少し古いので、グレード 3 の最近のバージョンを使用している場合は、そこに記載されているいくつかのバグが修正されています。
def initialize_combobox_script_select()
#get combobox widget from glade file
@combobox_script_select = @glade.get_widget("combobox_script_select")
@combobox_script_select.set_active(0) #this makes <select a script> the default element in the combobox
@script_list = ["helloworld", "byeworld"]
@script_list.each{|script| @combobox_script_select.append_text("#{script}")} #populate the combobox with the list of scripts
end
これは、スクリプト名で埋めていたコンボボックスを初期化するためのコード例です。