Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WxRuby, Создание окон при помощи WxRuby 
V
    Опции темы
Rname
Дата 1.2.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.1.2010

Репутация: нет
Всего: нет



Вот собственно код:
Код

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    


PM MAIL   Вверх
fixxer
Дата 2.2.2010, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: нет
Всего: 27



Код

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()



--------------------
user posted image
PM MAIL ICQ   Вверх
Rname
Дата 2.2.2010, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.1.2010

Репутация: нет
Всего: нет



Цитата(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 вопрос - буду признателен.
PM MAIL   Вверх
fixxer
Дата 2.2.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: нет
Всего: 27



0. Не подскажу. С WxRuby не работал. Ответ на вопрос был понятен из кода.
1. private - задает область видимости, следующие за этим методы будут доступны только внутри класса.
2. Собственно ответ в Вашей же ссылке. Учитесь работать с документацией.
Код

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))


Это сообщение отредактировал(а) fixxer - 2.2.2010, 17:20


--------------------
user posted image
PM MAIL ICQ   Вверх
Rname
Дата 3.2.2010, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.1.2010

Репутация: нет
Всего: нет



Цитата(fixxer @ 2.2.2010,  17:11)
0. Не подскажу. С WxRuby не работал. Ответ на вопрос был понятен из кода.
1. private - задает область видимости, следующие за этим методы будут доступны только внутри класса.
2. Собственно ответ в Вашей же ссылке. Учитесь работать с документацией.
Код

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))

Цитата

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

Спасибо еще раз. Добавить нечего - буду читать. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: GUI | Следующая тема »


 




[ Время генерации скрипта: 0.1235 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.