Допустим имеем xrc файл с описанием wxPanel, на которой расположены wxButton - "m_button1", и wxStaticText - "m_staticText1".
xrc файл:
- <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
- <object class="wxPanel" name="MyPanel1">
- <style>wxTAB_TRAVERSAL</style>
- <size>500,300</size>
- <object class="wxBoxSizer">
- <orient>wxVERTICAL</orient>
- <object class="sizeritem">
- <option>0</option>
- <flag>wxALL</flag>
- <border>5</border>
- <object class="wxButton" name="m_button1">
- <label>MyButton</label>
- <default>0</default>
- </object>
- </object>
- <object class="sizeritem">
- <option>0</option>
- <flag>wxALL</flag>
- <border>5</border>
- <object class="wxStaticText" name="m_staticText1">
- <label>MyLabel</label>
- <wrap>-1</wrap>
- </object>
- </object>
- </object>
- </object>
- </resource>
rb файл:
- # coding: utf-8
- require 'wx'
- class XrcApp < Wx::App
- def on_init
- #Читаем xrc файл
- xml = Wx::XmlResource.get()
- xml.init_all_handlers()
- xml.load("form.xrc")
- #Создаем новый фрейм в который поместим нашу панель
- frame = Wx::Frame.new( nil, -1, 'Simple' )
- frame.set_client_size( Wx::Size.new( 200, 200))
- # Помещаем панель на фрейм
- xml.load_panel( frame, 'MyPanel1')
- #переменной @but присвоим ссылку на элемент 'm_button1'
- @but = frame.find_window_by_name('m_button1')
- #обработчик события
- evt_button(@but.get_id()) { |event| my_button_click(event)}
- #переменной @label присвоим ссылку на элемент 'm_staticText1'
- @label =frame.find_window_by_name('m_staticText1')
- frame.show()
- end
- def my_button_click(event)
- puts @label::get_label()
- @label::set_label('hello')
- end
- end
- XrcApp.new().main_loop()