mieki256's diary



2013/08/10() [n年前の日記]

#1 [ruby] wxRubyをインストール

昨日作成したスクリプトを、Ruby/Tk でGUI化してたのだけど。どうも起動が遅いなと。wxRuby ならもうちょっと速く…いや、どうだろう…。試してみるかと。

Windows7 x64 + Ruby 1.9.3 の環境に wxruby をインストール。 _mas-lab.blog: wxRubyをWindowsで動かす を参考に、 _RubyForge: wxRuby: ファイルリスト から、wxruby-ruby19-2.0.1-x86-mingw32.gem をDLして、
gem install wxruby-ruby19-2.0.1-x86-mingw32.gem
を実行。

xrcise がエラーを出す。 :

wx_sugar なるものをインストールすると、xrcise という、XRC から .rb に変換してくれるツールが使えるようになるらしく。試しにインストール。
gem install wx_sugar
Ruby インストールフォルダ\bin\ 以下に、xrcise.bat というファイルが出来ていた。

wxGlade 0.6.5 で作成した .xrc を渡してみたところ、エラー発生。
> xrcise -a App1 -o guitest.rb guilayout.xrc

C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/lib/wx_sugar/xrc/outputter.rb:46:in `clean_id_attr_readers': undefined method `each' for #<String:0x2931678> (NoMethodError)
        from (erb):16:in `output'
        from C:/ruby193mingw/lib/ruby/1.9.1/erb.rb:838:in `eval'
        from C:/ruby193mingw/lib/ruby/1.9.1/erb.rb:838:in `result'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/lib/wx_sugar/xrc/outputter.rb:19:in `output'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:126:in `block (2 levels) in <top (required)>'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:125:in `each'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:125:in `block in <top (required)>'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:124:in `open'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/wx_sugar-0.1.22/bin/xrcise:124:in `<top (required)>'
        from C:/ruby193mingw/bin/xrcise:23:in `load'
        from C:/ruby193mingw/bin/xrcise:23:in `<main>'

_xrcise not working - Ruby Forum が関係あるっぽい。 _Ruby 1.9ではStringクラスのeachは廃止された のでエラーが出ているらしい。「each_lineメソッドかlinesメソッドを使え」とのことなので…。

Rubyインストールフォルダ\lib\ruby\gems\1.9.1\gems\wx_sugar-0.1.22\lib\wx_sugar\xrc\outputter.rb を修正。str.each(',') を str.each_line(',') に書き換える。これでエラーは出なくなった。

出力された .rb を実行したらウインドウが開くはず。

若干違う .rb を吐き出してみる。
xrcise -o guilayout.rb guilayout.xrc

吐き出した .rb を require して、class を継承して表示するスクリプトを書いてみる。
#!ruby -Ku
#
# wxRuby + XRC を使ったGUI表示のテスト

require 'rubygems'
require 'wx'
require_relative 'guilayout'
     
class HtmlConvGui < MyFrame
  def initialize(parent = nil)
    super()

    # ボタンが押された時の処理を設定
    evt_button(button_4.get_id()) { |event|
      on_buttonClick(event)
    }
  end

  # ボタンが押された時の処理
  def on_buttonClick(event)
    s = "こんにちはこんにちは"
    Wx::message_box(s, '挨拶', Wx::OK | Wx::ICON_INFORMATION)
  end
end

class App < Wx::App
  def on_init
    f =  HtmlConvGui.new
    f.show
  end
end

App.new.main_loop

xrcise は .xrc を .rb に変換してくれる、と思ってたけど。出力した .rb を覗いたら、.xrc を読み込んでレイアウトをしているように見えた。どうやら、 .xrc を読み込んで表示しやすくするための .rb を自動生成するよ、みたいなツールだったらしい…。

ということは、Ocra で exe化する際に、.xrc も同梱しておかないと、exe実行時に「.xrcが見当たらねえ」と文句を言われてしまいそうな予感。

以上です。

過去ログ表示

Prev - 2013/08 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project