Ruby/Tk - FrontPage  Index  Search  Changes  PageRank  RSS  Login

その他のサンプルスクリプト

役立つもの,役立たないもの織りまぜた,雑多なサンプルスクリプトのとりあえずの置場です.将来はもっときちんと整理されるかもしれません.(^_^;

各サンプルスクリプトは,スクリプトファイル名のリンクからダウンロードできます.

プログレスバー

pure Ruby/Tkで作成したプログレスバーです. requireで読み込めばウィジェットクラスとして使えます. スクリプトを直接実行した場合にはデモとして動きます.

バーが左から右に延びていくタイプのプログレスバーで, サイズの動的変更(他のウィジェットのように, ウィンドウサイズの変更に追随したサイズ変更)にも対応しています. もちろんバーの色や文字の色は変更可能です. 文字色は2色(バーが延びてくる前と延びた後)を指定できます. バーが文字の一部だけにかかった場合にも, その部分だけで色が変化するようになっています.

progressbar.png

このプログレスバーの作成のために特別なウィジェットは何も使っていません. ごく普通の frame ウィジェットと label ウィジェットだけでできています. それらを place ジオメトリマネージャを使って配置しているだけです.

Ruby/Tk で GUI を作成していて place ジオメトリマネージャを使うことは 多くはないと思います. ですが,使い方を習得していれば, このプログレスバー程度のものはさほど苦労なく作ることができます.

数独のボード

パズル「数独」用のボードです. 36×36の大きさ(サイズ6)までの正方形のボードに対応しています. あくまでもボードのみで, 正しいかどうかのチェック機能はありますが, 問題を作成する機能はありません.

サイズ3までは 1 〜 9 の数字, サイズ4以上は 0 〜 9 と A 〜 の英数字を使います. 初期設定済みのマス以外で範囲内の文字のキーを叩けば, その文字が入力されます. 間違えた時はそのまま正しいキーを叩いてもいいですし, DeleteまたはBackspaceキーでクリアすることも可能です.

sudoku-board.png

このように入力した文字を表示する場合には, entry ウィジェットを使おうとする人は多いと思います. ですが,この程度のものであれば, label ウィジェットにちょっとしたバインディングを施すだけで十分です. 逆に entry ウィジェットだと,機能が豊富過ぎて制御が面倒かもしれません.

requireで読み込めばウィジェットクラスとして使えます. スクリプトを直接実行した場合にはデモとして動きます.

キャンバスアイテムの拡大・縮小

キャンバスウィジェットに表示したアイテムの拡大・縮小を行なっているサンプルです. キャンバスタグを使うことで,全アイテムのスケーリングを一括して行なっています. キャンバスウィジェット上で左クリックすればその位置を中心に1.25倍に, 右クリックすれば0.8倍に拡大・縮小します.

scale_canvasitem.png

キャンバスアイテムの拡大・縮小は座標の制御ですので, テキストアイテムの文字の大きさは変化しません. そこでこのサンプルスクリプトでは,TkFontオブジェクトを活用しています. ひとつのTkFontオブジェクトをすべてのテキストアイテムのフォントとして設定し, キャンバスアイテムの拡大・縮小にあわせてTkFontオブジェクトのサイズ属性を変更することで, すべてのテキストアイテムの文字の大きさが同時に変更されるようにしています.

ちなみに,Tcl/Tk8.5 からは X Window System 上でもフォントのエイリアシングに対応しましたので, 拡大・縮小を行なっても Tcl/Tk8.4 までのように フォントがギザギザになったりはしなくなりました (WindowsではTcl/Tk8.4の時点でもエイリアシング対応済). X Window System でフォントに不満を感じている人は Tcl/Tk8.5 への移行をお薦めします.

Last modified:2009/12/03 19:33:07
Keyword(s):[Ruby/Tk] [Ruby]
References:[Ruby/Tkのサンプルスクリプト]