LoginSignup
18
23

More than 5 years have passed since last update.

【Ruby de GUI】FxRubyを使ってGUIアプリケーションを作ってみよう!

Last updated at Posted at 2016-02-09

FxRuby

FxRubyはRubyのGUIツール、ライブラリです。もともとRubyが好きでやっていたのですが、GUIを作ってみたいなぁと思った時に、ふと目に入ったのがこれでした。Rubyはスクリプト言語なのでGUIアプリケーションでも簡単なコードの記述で作ることができます。

FxRubyの導入

Rubyとgemが入っている前提でのインストールの方法を示します。RubyはこちらからDLできます。
まず、コマンドプロンプトを開き、

gem search fxruby

と入力
するとこんな具合に

C:\Users\User>gem search fxruby

*** REMOTE GEMS ***

fxruby (1.6.33 ruby x64-mingw32 x86-mingw32, 1.6.20 universal-darwin-10 x86-linux, 1.6.19 universal-darwin-9 x86-mswin32-60, 1.6.14 mswin32)

fxrubyを発見

C:\Users\User>gem install fxruby
Successfully installed fxruby-1.6.33-x64-mingw32
Parsing documentation for fxruby-1.6.33-x64-mingw32
Done installing documentation for fxruby after 2 seconds
1 gem installed

これでインストールは完了です。

Hello!プログラム

どのようなプログラム?

hello, Worldのプログラムはいくらでもバリエーションがあるのですが、今回はメッセージボックスを使ってHello!と表示させましょう。

コーディング

ではさっそくプログラムを記述してみましょう。こちらにドキュメンテーションありますので、是非参考になさってください。

まず、

require "fox16"
include "Fox"

という感じに、プログラムの先頭で”fox16”のなかのFoxモジュールをインクルードします。Foxモジュールの中には

FXMainWindow

というMainWindowを作るクラスがあります。

app=FXApp.new
main=FXMainWindow.new(app, "Hello", :width=>323, :height=>200)
app.create
main.show(PLACEMENT_SCREEN)
app.run

というコードでウィンドウが作成されます。単にこの中にボタンを配置しても良いのですが、オブジェクト指向スクリプト言語の神髄を味わうため、これを継承してMyHelloというクラスを作りましょう。

class MyHello < FXMainWindow
    def initialize(app, title="Hello!")
        # main is window class
        main=super(app, title, :width=>323, :height=>200)

        btnHello=FXButton.new(main, "Click and say Hello!") # create the button

        # Event
        btnHello.connect(SEL_COMMAND) do |sender, sel, data|
            msgBox=FXMessageBox.new(btnHello, "Hello from FxRuby", "Hello!", :opts=>MBOX_OK)
            msgBox.execute
        end
    end
end

(ウィンドウのサイズを黄金比に近似させていたのがお分かりになりましたか?)では、これらのことを踏まえて最終的なコードととしては

 Hello_MessageBox.rb
require "fox16"
include Fox

class MyHello < FXMainWindow
    def initialize(app, title="Hello!")
        main=super(app, title, :width=>323, :height=>200)

        btnHello=FXButton.new(main, "Click and say Hello!", :opts=>BUTTON_NORMAL|LAYOUT_CENTER_X|LAYOUT_CENTER_Y)

        btnHello.connect(SEL_COMMAND) do |sender, sel, data|
            msgBox=FXMessageBox.new(btnHello, "Hello from FxRuby", "Hello!", :opts=>MBOX_OK)
            # FXMessageBox.question(main, MBOX_OK, "Hello", "Hello")
            msgBox.execute
        end
    end
end
app=FXApp.new
main=MyHello.new(app)
app.create
main.show(PLACEMENT_SCREEN)
app.run

こうなります。実行すると
Hello!というタイトルのウィンドウが表示され、ボタンを押すとメッセージボックスが表示されます。
2016-02-09.png

最後に

今回、このような記事を書かせていただいたのですが、実際私はFxRubyを使ってまだ1か月もたっていません。それゆえこの記事を更新したり、別の記事でFxRubyの話題を取り上げるかもしれません。日本語の資料があまりないため、手探りでFxRubyを習得していこうと思います!

18
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
23