Ruby + Shoes =素敵な小さなGUI

この記事はもともと個人のブログ用に公開されたものですが、Rubyを学び始めた人や、単にアプリケーション用のGUIを書きたい人にとっては便利だと思います。



エントリーはありません。 今日のトピックはです。 Rubyアプリケーション用のGUIを作成するこのような小さなキット。 について初めて聞いたのは 、ルビーに何かグラフィックを作る方法を見つけようとしたときでした。 すぐに答えが出て、2つ(または3つのオプション)になりました。







最初の項目を見てから、2番目の項目を調べました。 私が今日住んでいる人気のあるC ++ GUIアプリケーションの多くはQtの基礎を持っていることを学びました:)一般に、私は多くの有用で一般的に肯定的なものを学びました。 私は靴をほとんど見ませんでした(私はそれらをそれと呼ぶのが好きです)が、無駄でした。



文字通り1か月後、私は偶然に試してみることにしました。RubyでShoesを使用してGUIを作成することは、ネイティブでないQtなどを使用するよりもはるかに簡単です。



実際、これは小さなサイクルの最初の記事になると思います。 その中で、私はゆっくりですが確実に簡単なアプリケーションの作成、詳細などを説明します。面白いと思います。 些細なことから始めましょう。



サーバーへのFTPファイルダウンローダー









アラデザイン



私たちのプロジェクトには何が必要ですか? 一般的に、私は簡単なものを書くことにしました。 プログラムから次のものが必要です。







このすべてが簡単かつ迅速に行われるため、ビジネスに取り掛かりますが、最初は簡単な紹介です。



靴について





「これ」をダウンロード: shoooes.net/downloads ダウンロードしたら、デスクトップに「shoes.exe」および「shoes.exe –-package」のショートカットを作成します。



記事/マニュアルはここで閲覧できます: help.shoooes.net ただし、shoes.exe自体でも、オフラインマニュアルを開くことができます。 十分に快適で詳細。



必要に応じてそこからすべてを読むことをお勧めします。サイトにあるものを忘れないでください。 私の意見では、より多くの情報があります。



GUIを書く





ここで記述するのは、Shoes.app do ... endブロックにラップされた通常のRubyコードです。 自己の内部、これは私たちの靴::アプリです。 必要なメソッドを呼び出し、 varやその他の人生の喜びを使用できます。 私はコードを分離してこのクラスから継承する方法を本当に理解していないので、より複雑な文が靴のブロック内で$ shoes = self briefの下に渡されます。



誰もが好む多くの肯定的な資質の中で-クロスプラットフォーム。 同じrubyコードは異なるOSで動作しますが、少し異なって見えます: help.shoooes.net/Introducing.html



しかし、タスクに戻ります。 あなたと私はファイルダウンローダーをFTPサーバーに書き込みたいと思います。 サーバーに接続するには、Net :: FTP(標準セットから)を使用します。GUIについては、何を知っていますか?



はじめに





Shoes.app(:title => 'FTP File Uploader', :width => 500, :height => 400, :resizable => false) do

require 'net/ftp'

background gradient rgb(255, 255, 255), rgb(150, 150, 150), :angle => 45



stack :margin => 20 do



end

end









いくつかのパラメーターを設定して、アプリケーションを作成します。





:タイトル-タイトル

:幅-幅

:高さ-高さ

:サイズ変更可能-サイズ変更:-)





次に、将来FTPで動作するために必要なものを接続します。

その後、ある角度のグラデーションで美しい背景を作成します(ほぼ人間の言語のように、「背景を角度でrbg rbgに設定する」など)。



次はブロックです。 その中で、周囲すべて(:マージン)からインデントを設定できます。 とりわけ、スタック内の要素は、フローとは異なり、互いの下に配置されます。



アイテムを追加





Shoes.app(:title => 'FTP File Uploader', :width => 500, :height => 400, :resizable => false) do



require 'net/ftp'



background gradient rgb(255, 255, 255), rgb(150, 150, 150), :angle => 45



stack :margin => 20 do

caption 'FTP File Uploader'



flow :margin => 3 do

inscription 'FTP-server: '

@server = edit_line :width => 200

end



flow :margin => 3 do

inscription 'FTP-path: '

@path = edit_line :width => 200

end



flow :margin => 3 do

inscription 'Username: '

@username = edit_line :width => 200, :text => 'anonymous'

end



flow :margin => 3 do

inscription 'Password: '

@password = edit_line :width => 200, :secret => true

end



para



flow :margin => 3 do

inscription 'Filename: '

@filename = edit_line :width => 200

para ' '

button 'Browse...' do

@filename.text = ask_open_file

end

end



flow :margin => 3 do

@status = para ''

end



end

end









ベースを作成した後、いくつかの要素を追加します。実際、アプリケーションに追加する要素は、少なくとも多少なりとも生きています。 これを行うには、フロー、碑文(10pxのサイズのテキスト)、para(テキスト、さらに大きいテキスト)、edit_line、button-グラフィカルインターフェイスの要素を使用します。



すでに書かれているように、フローは同じスタックブロックであり、その中の要素だけが次々に行きます。



EditLine-入力フィールド。



碑文とパラはテキストブロックです。



ボタン-ありふれたボタン。



さて、もっと何かについて。 「@server = edit_line:width => 200」-なぜなら Shoes.appブロック全体の中で、selfはアプリケーションであり、@を介してそれを操作できます。したがって、要素、データなどを配置し、構造内でそれらを操作します。



もう1つのポイントは、ボタンを呼び出さないことです。ボタンのアクションをすぐに説明するからです。 ボタンメソッドにブロックを追加すると、ボタンが押されたときに実行されます-便利なことに同意します。 したがって、「参照...」をクリックすると、ダイアログボックス(ask_open_file)が開き、選択したファイルの名前がedit_lineに書き込まれます。



少し気が散る。 結局のところ、私たちは創造性の成果を見る必要があります。 これを行うには、Shoes.exeを実行し、「アプリを開く」を選択します。 .rbファイルと出来上がりを選択してください:)



最終段階





何が起こったかのスクリーンショット: http : //jleft.ru/wp-content/uploads/2009/05/screen11.gif

別のファイルのソース: http : //www.sendspace.com/file/ba7lkl



Shoes.app(:title => 'FTP File Uploader', :width => 500, :height => 400, :resizable => false) do



require 'net/ftp'



background gradient rgb(255, 255, 255), rgb(150, 150, 150), :angle => 45



stack :margin => 20 do

caption 'FTP File Uploader'



flow :margin => 3 do

inscription 'FTP-server: '

@server = edit_line :width => 200

end



flow :margin => 3 do

inscription 'FTP-path: '

@path = edit_line :width => 200

end



flow :margin => 3 do

inscription 'Username: '

@username = edit_line :width => 200, :text => 'anonymous'

end



flow :margin => 3 do

inscription 'Password: '

@password = edit_line :width => 200, :secret => true

end



para



flow :margin => 3 do

inscription 'Filename: '

@filename = edit_line :width => 200

para ' '

button 'Browse...' do

@filename.text = ask_open_file

end

end



flow :margin => 3 do

button 'Upload' do

@status.text = ''

begin

Net::FTP.open(@server.text) do |ftp|

ftp.login(@username.text, @password.text)

ftp.chdir(@path.text)

ftp.putbinaryfile(@filename.text)

end

@status.text = 'File transfered'

rescue Exception => e

alert "Error: #{e}"

end

end

end



flow :margin => 3 do

@status = para ''

end



end

end









何かが完了していない/正しくない場合-書き込み、修正、s :)



UPD Rubyブログに移動しました



All Articles