Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: GUI > WxRuby


Автор: Rname 1.2.2010, 15:59
Вот собственно код:
Код

require 'wx'
   
class MyApp < Wx::App
  
  def on_init()
    frame = Wx::Frame.new(nil, -1, '@_File_Sort_List-0.01beta') 
    frame.set_client_size(Wx::Size.new(900,700))      
    sizer = Wx::BoxSizer.new(Wx::VERTICAL)
    sizer_2 = Wx::BoxSizer.new(Wx::HORIZONTAL)

 
    text = Wx::TextCtrl.new(frame, -1, 'Type in here',
                           Wx::DEFAULT_POSITION, Wx::Size.new(900,324),
                           Wx::TE_MULTILINE)
    sizer.add(text, 1, Wx::GROW|Wx::ALL, 2)
    
        text = Wx::TextCtrl.new(frame, -1, 'Type in here',
                           Wx::Point.new(0,376), Wx::Size.new(900,324), 
                           Wx::TE_MULTILINE)
    sizer.add(text, 1, Wx::GROW|Wx::ALL, 2)
        

        button = Wx::Button.new(frame, -1, 'Click on this')
        sizer_2.add(button, 2,  -2)  
                button_2 = Wx::Button.new(frame, -1, 'Click on this')
                sizer_2.add(button_2, 2, -2)
            
                    button_3 = Wx::Button.new(frame, -1, 'Click on this'                                  )
                    sizer_2.add(button_3, 2,  -2) 
                        button_4 = Wx::Button.new(frame, -1, 'Click on this')
                        sizer_2.add(button_4, 2,  -2) 
    
                            button_5 = Wx::Button.new(frame, -1, 'Click on this')
                            sizer_2.add(button_5, 2,  -2)

            
    frame.set_sizer(sizer_2)
    frame.show()
end
  end
MyApp.new.main_loop()

Вопрос: как правильно вставить пункт "меню" (menu) в это окно (как в написанном ниже примере)?
 
Код

 menu = Wx::MenuBar.new
      file = Wx::Menu.new 
        file.append( Wx::ID_ANY, "&Open\tAlt-O", "Open File" )
          file.append( Wx::ID_ANY, "&Close\tAlt-C", "Close File" )     
    file.append_separator
    file.append( Wx::ID_EXIT, "E&xit\tAlt-X", "Quit" )
    menu.append( file, "&File" )
    help = Wx::Menu.new
    help.append( Wx::ID_ABOUT, "&About...\tF1", "Show about dialog" )
    menu.append( help, "&Help" )
    self.menu_bar = menu
    evt_menu( Wx::ID_EXIT, :on_quit )
    evt_menu( Wx::ID_ABOUT, :on_about )

Всем спасибо сразу и много smile    


Автор: fixxer 2.2.2010, 12:11
Код

require 'wx'

class MyApp < Wx::App

  def on_init()
    frame = Wx::Frame.new(nil, -1, '@_File_Sort_List-0.01beta') 
    frame.set_client_size(Wx::Size.new(900,700))      
    sizer = Wx::BoxSizer.new(Wx::VERTICAL)
    sizer_2 = Wx::BoxSizer.new(Wx::HORIZONTAL)

    text = Wx::TextCtrl.new(frame, -1, 'Type in here',
                            Wx::DEFAULT_POSITION, Wx::Size.new(900,324),
                            Wx::TE_MULTILINE)
    sizer.add(text, 1, Wx::GROW|Wx::ALL, 2)

    text = Wx::TextCtrl.new(frame, -1, 'Type in here',
                            Wx::Point.new(0,376), Wx::Size.new(900,324), 
                            Wx::TE_MULTILINE)
    sizer.add(text, 1, Wx::GROW|Wx::ALL, 2)

    button = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button, 2,  -2)  
    button_2 = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button_2, 2, -2)

    button_3 = Wx::Button.new(frame, -1, 'Click on this'                                  )
    sizer_2.add(button_3, 2,  -2) 
    button_4 = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button_4, 2,  -2) 

    button_5 = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button_5, 2,  -2)

    frame.set_sizer(sizer_2)
    frame.menu_bar = create_menu
    frame.show()
  end

  def on_quit
  end

  def on_about
  end

  private

  def create_menu
    menu = Wx::MenuBar.new
    file = Wx::Menu.new 
    file.append( Wx::ID_ANY, "&Open\tAlt-O", "Open File" )
    file.append( Wx::ID_ANY, "&Close\tAlt-C", "Close File" )     
    file.append_separator
    file.append( Wx::ID_EXIT, "E&xit\tAlt-X", "Quit" )
    menu.append( file, "&File" )
    help = Wx::Menu.new
    help.append( Wx::ID_ABOUT, "&About...\tF1", "Show about dialog" )
    menu.append( help, "&Help" )
    evt_menu( Wx::ID_EXIT, :on_quit )
    evt_menu( Wx::ID_ABOUT, :on_about )
    menu
  end
end
MyApp.new.main_loop()

Автор: Rname 2.2.2010, 16:54
Цитата(fixxer @ 2.2.2010,  12:11)
Код

require 'wx'

class MyApp < Wx::App

  def on_init()
    frame = Wx::Frame.new(nil, -1, '@_File_Sort_List-0.01beta') 
    frame.set_client_size(Wx::Size.new(900,700))      
    sizer = Wx::BoxSizer.new(Wx::VERTICAL)
    sizer_2 = Wx::BoxSizer.new(Wx::HORIZONTAL)

    text = Wx::TextCtrl.new(frame, -1, 'Type in here',
                            Wx::DEFAULT_POSITION, Wx::Size.new(900,324),
                            Wx::TE_MULTILINE)
    sizer.add(text, 1, Wx::GROW|Wx::ALL, 2)

    text = Wx::TextCtrl.new(frame, -1, 'Type in here',
                            Wx::Point.new(0,376), Wx::Size.new(900,324), 
                            Wx::TE_MULTILINE)
    sizer.add(text, 1, Wx::GROW|Wx::ALL, 2)

    button = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button, 2,  -2)  
    button_2 = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button_2, 2, -2)

    button_3 = Wx::Button.new(frame, -1, 'Click on this'                                  )
    sizer_2.add(button_3, 2,  -2) 
    button_4 = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button_4, 2,  -2) 

    button_5 = Wx::Button.new(frame, -1, 'Click on this')
    sizer_2.add(button_5, 2,  -2)

    frame.set_sizer(sizer_2)
    frame.menu_bar = create_menu
    frame.show()
  end

  def on_quit
  end

  def on_about
  end

  private

  def create_menu
    menu = Wx::MenuBar.new
    file = Wx::Menu.new 
    file.append( Wx::ID_ANY, "&Open\tAlt-O", "Open File" )
    file.append( Wx::ID_ANY, "&Close\tAlt-C", "Close File" )     
    file.append_separator
    file.append( Wx::ID_EXIT, "E&xit\tAlt-X", "Quit" )
    menu.append( file, "&File" )
    help = Wx::Menu.new
    help.append( Wx::ID_ABOUT, "&About...\tF1", "Show about dialog" )
    menu.append( help, "&Help" )
    evt_menu( Wx::ID_EXIT, :on_quit )
    evt_menu( Wx::ID_ABOUT, :on_about )
    menu
  end
end
MyApp.new.main_loop()

Спасибо огромное. 
Не подскажите, где можно найти подробную документацию по WXruby (лучше, конечно, вообще книгу)
кроме как в гугле, здесь - wxruby.rubyforge.org или здесь - http://wxruby.rubyforge.org/doc/
На русском, наверное, нет. Но можно и на английском. 

И еще пару вопросов:
1. что означает Private?
Цитата

private
def create_menu

2. Есть ли WxRuby функция, чтобы окно не масштабировалось. Т.е. вот в этом примере оно 700х900 - и чтоб при попытке растягивания оно так и оставалось.
p.s. если ответите хотя бы на 0 вопрос - буду признателен.

Автор: fixxer 2.2.2010, 17:11
0. Не подскажу. С WxRuby не работал. Ответ на вопрос был понятен из кода.
1. private - задает область видимости, следующие за этим методы будут доступны только внутри класса.
2. Собственно ответ в Вашей же http://wxruby.rubyforge.org/doc/frame.html. Учитесь работать с документацией.
Код

frame = Wx::Frame.new(nil, -1, '@_File_Sort_List-0.01beta', 
                          Wx::DEFAULT_POSITION,
                         Wx::DEFAULT_SIZE,
                         Wx::DEFAULT_FRAME_STYLE & 
                         ~(Wx::RESIZE_BORDER | 
                           Wx::RESIZE_BOX | 
                           Wx::MAXIMIZE_BOX))

Автор: Rname 3.2.2010, 20:01
Цитата(fixxer @ 2.2.2010,  17:11)
0. Не подскажу. С WxRuby не работал. Ответ на вопрос был понятен из кода.
1. private - задает область видимости, следующие за этим методы будут доступны только внутри класса.
2. Собственно ответ в Вашей же http://wxruby.rubyforge.org/doc/frame.html. Учитесь работать с документацией.
Код

frame = Wx::Frame.new(nil, -1, '@_File_Sort_List-0.01beta', 
                          Wx::DEFAULT_POSITION,
                         Wx::DEFAULT_SIZE,
                         Wx::DEFAULT_FRAME_STYLE & 
                         ~(Wx::RESIZE_BORDER | 
                           Wx::RESIZE_BOX | 
                           Wx::MAXIMIZE_BOX))

Цитата

Учитесь работать с документацией.

Спасибо еще раз. Добавить нечего - буду читать. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)