Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Ruby/Glade 3填充组合框_Ruby_Combobox_Glade - Fatal编程技术网

如何使用Ruby/Glade 3填充组合框

如何使用Ruby/Glade 3填充组合框,ruby,combobox,glade,Ruby,Combobox,Glade,我正试图用Glade3(gtk)和ruby制作一个gui,但我不知道如何用字符串列表动态填充组合框。在glade中可视化生成gui后,我得到了xml.glade文件,并使用ruby glade创建模板生成了.rb文件,但不知道从这里可以到哪里去。我找不到任何关于如何在Glade3中使用ruby的指南,如果有任何帮助,我将不胜感激。谢谢 为什么需要生成.rb文件?不赞成代码生成™. 那么,您是否使用实例加载glade文件?一旦有了Builder对象,就可以调用该方法来获取特定的小部件 这是一个关

我正试图用Glade3(gtk)和ruby制作一个gui,但我不知道如何用字符串列表动态填充组合框。在glade中可视化生成gui后,我得到了xml.glade文件,并使用ruby glade创建模板生成了.rb文件,但不知道从这里可以到哪里去。我找不到任何关于如何在Glade3中使用ruby的指南,如果有任何帮助,我将不胜感激。谢谢

为什么需要生成.rb文件?不赞成代码生成™. 那么,您是否使用实例加载glade文件?一旦有了Builder对象,就可以调用该方法来获取特定的小部件

这是一个关于ruby的非常好的教程,它不涉及ruby,但python已经足够接近了。它有点过时了,所以如果您使用的是最新版本的glade 3,那么上面提到的一些bug已经修复。

def initialize\u combobox\u script\u select()
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
#从glade文件获取combobox小部件 @combobox_script_select=@glade.get_小部件(“combobox_script_select”) @combobox_script_select.set_active(0)#这将使combobox中的默认元素处于活动状态 @脚本列表=[“helloworld”、“byeworld”] @脚本列表。每个{脚本}@combobox_script_select.append_text(“{script}”)}用脚本列表填充组合框 终止

这是一些初始化组合框的示例代码,我用脚本名填充组合框。

如果使用visualruby,可以创建如下组合框:

combo = VR::SimpleComboBoxEntry("Selected", "Option1", "option2", "Option3")
@builder["vbox1"].add(combo)
出于某种原因,Glade不适用于简单的组合框。选择简单文本类型时,它不会正确保存在xml文件中。因此,您需要做的是将一个VBox或带有1个单元格的HBox放入您希望组合框的glade表单中,并将上面的框添加到VBox中。在上面的示例中,@builder是Gtk::builder的一个实例

以下是更多的例子: