Как использовать/заполнить поле со списком с помощью Ruby/Glade 3

Я пытаюсь создать графический интерфейс с Glade 3 (gtk) и ruby, но не могу понять, как на самом деле динамически заполнять поле со списком, например, списком строк. Я получаю файл xml .glade после того, как визуально создаю свой графический интерфейс в Glade, и использую ruby-glade-create-template для создания моего файла .rb, но понятия не имею, куда идти дальше. Я не могу найти никаких руководств по использованию ruby ​​с Glade 3, и любая помощь будет оценена по достоинству. Спасибо!


person Javed Ahamed    schedule 28.07.2009    source источник


Ответы (3)


Зачем вам нужно создавать файл .rb? Генерация кода Frown Upon™. Итак, вы загружаете файл поляны с помощью Gtk::Builder. пример? Получив объект Builder, вы вызываете метод get_object. чтобы получить определенные виджеты.

Вот неплохой учебник по поляне 3, он не распространяется на Ruby, но достаточно близок к Python. Он немного устарел, поэтому некоторые ошибки, упомянутые там, были исправлены, если вы используете последнюю версию Glade 3.

person Isaiah    schedule 01.08.2009

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

Это пример кода для инициализации поля со списком, который я использовал для заполнения именами скриптов.

person Javed Ahamed    schedule 07.09.2009

Если вы использовали VisualRuby, вы можете создать поле со списком следующим образом:

combo = VR::SimpleComboBoxEntry("Selected", "Option1", "option2", "Option3")
@builder["vbox1"].add(combo)

По какой-то причине Glade не работает с простыми выпадающими списками. Когда вы выбираете простой текстовый тип, он не сохраняется должным образом в XML-файле. Итак, что вам нужно сделать, это поместить VBox или HBox с 1 ячейкой в ​​форму поляны, куда вы хотите, чтобы поле со списком помещалось, и добавить вышеупомянутое поле в VBox. В приведенном выше примере @builder является экземпляром Gtk::Builder.

Есть еще примеры по адресу:

http://visualruby.net

person user1182000    schedule 25.03.2012