博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wxruby框架例子1
阅读量:6113 次
发布时间:2019-06-21

本文共 3286 字,大约阅读时间需要 10 分钟。

看代码,学程序

1.hello 例子
require "wx" 
include Wx  

=begin

 第一个参数nil,表示要构造的Frame是没有父窗口的,如果有的话,应该在这儿传送。
    第二个参数 -1,标识
    第三个参数 标题。"The Bare Minimum", 
    第四个参数 定义了Frame在桌面上出现的位置.
    第五个参数 定义Frame的初始大小
    第六个参数,窗体类型。
=end
class MinimalApp < App  
   def on_init  
        myFrame = Frame.new(nil, -1, "test")    #创建frame
        StaticText.new(myFrame,-1,"Hello World")  
        myFrame.show()     #显示
  end  
end 

MinimalApp.new.main_loop  

然后通过exerb生成exe。单独可以运行。

2.创建一个确认对话框

require 'wx'
include Wx

class MyApp < Wx::App

  MENU_DIALOGS = 1000
  def on_init()
    frame = Wx::Frame.new(nil, -1, 'test123(ue)')

    #创建菜单子项

    menu_dialogs = Wx::Menu.new()   
    menu_dialogs.append(MENU_DIALOGS, "&Dialog...\t", 'Dialog')

    #创建菜单条

    menu_bar  = Wx::MenuBar.new()
    menu_bar.append(menu_dialogs, "&mytest")
    frame.set_menu_bar( menu_bar )

    frame.set_client_size( Wx::Size.new(200,200))

    frame.evt_menu(MENU_DIALOGS) {  | e |  on_dialog(e) }

    panel = Wx::Panel.new(frame)   

 frame.show()
  end

  DIALOG_OPTIONS = Wx::NO_DEFAULT|Wx::OK|Wx::CANCEL|Wx::ICON_EXCLAMATION
  def on_dialog(event)
    confirm = Wx::MessageDialog.new(nil, "Are you really sure?", 
                                    "Just checking", DIALOG_OPTIONS )
    case confirm.show_modal()
    when Wx::ID_OK
      puts "OK"
    when Wx::ID_CANCEL
      puts "NOT OK"
    end
  end
end

MyApp.new.main_loop()

 

3.窗口框架中例子

require 'wx'

include Wx

#搜寻框

class SearchDialog < Wx::Dialog
  def initialize(parent)
    super( parent, -1, 'Search')

    sizer = Wx::FlexGridSizer.new(2,4)

    #创建lable

    sizer.add(Wx::StaticText.new(self, -1, 'Search for'), 0, Wx::ALIGN_CENTRE_VERTICAL|Wx::ALIGN_RIGHT, 4) 
 #创建edit,其中edit为@term
    @term  = Wx::TextCtrl.new(self, -1, 'text')      
    sizer.add(@term, 2, Wx::GROW|Wx::ALL, 4)

 #创建lable

    sizer.add(Wx::StaticText.new(self, -1, 'Expand search'),0, Wx::ALIGN_CENTRE_VERTICAL|Wx::ALIGN_RIGHT, 4)

 #spin控件

 @expand = Wx::SpinCtrl.new( self, -1, "")
    @expand.set_range(0,250)
    @expand.set_value(50)
    sizer.add(@expand, 0, Wx::ALL, 4)

 #

    sizer.add(Wx::StaticText.new(self, -1, ''), 0, Wx::ALIGN_CENTRE, 4)
    @regx  = Wx::CheckBox.new(self, -1, "Use regular expressions")
    sizer.add(@regx, 0, Wx::ALL, 4)

    #search button和他响应事件

    button = Wx::Button.new(self, -1, 'Search')
    button.evt_button(button.get_id) { | e | on_do_search() }
    sizer.add(button, 0, Wx::ALL, 4)

    #cancel button 

    button = Wx::Button.new(self, -1, 'Cancel')
    button.evt_button(button.get_id) { | e | hide() }
    sizer.add(button, 0, Wx::ALL|Wx::ALIGN_RIGHT, 4)
    
 #size 置入dialog框体中
    self.set_sizer(sizer)
    sizer.set_size_hints(self)
    sizer.fit(self)
  end

  def get_term

    @term.get_value
  end

  def get_regexp

    @regx.get_value
  end

  def get_expand

    @expand.get_value
  end

  def on_do_search

    puts "Search term: %s; regexps: %s; expand: %i" % 
      [ get_term(), get_regexp(), get_expand() ]
  end
end

#主框架处理
class MyApp < Wx::App
  MENU_DIALOGS = 1000
  MENU_EXIT    = 1001
  
  
  def on_init()
    @frame = Wx::Frame.new(nil, -1, 'Dialog')
    menu_dialogs = Wx::Menu.new()
    menu_dialogs.append(MENU_DIALOGS, "&Dialog...\t", 'Dialog')
    menu_dialogs.append(MENU_EXIT, "&Exit...\t", 'Exit')
    menu_bar  = Wx::MenuBar.new()
    menu_bar.append(menu_dialogs, "&Dialogs")
   @frame.set_menu_bar( menu_bar )

    @frame.set_client_size( Wx::Size.new(400,400) )

    @frame.evt_menu(MENU_DIALOGS) { | e | on_dialog(e) }
    panel = Wx::Panel.new(@frame)
    @frame.show()

  end

  def on_dialog(event)

    @search ||= SearchDialog.new(@frame)
    @search.show(true)
  end

end

MyApp.new.main_loop()

转载于:https://www.cnblogs.com/zhouwenwu/archive/2012/02/15/2352344.html

你可能感兴趣的文章
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
[Usaco2015 dec]Max Flow
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
android studio修改新项目package名称
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>