Ruby-tk-scrollbar
提供:Dev Guides
Ruby/Tk-スクロールバーウィジェット
説明
- スクロールバー*は、ユーザーが別のウィジェットのすべての部分を表示するのに役立ちます。ウィジェットのコンテンツは通常、利用可能な画面スペースに表示できるものよりもはるかに大きくなります。
スクロールバーには、スクロールバーの両端に1つずつ、スクロールバーの中央部にスライダーが2つの矢印が表示されます。 スライダーの位置とサイズは、関連するウィンドウに表示されるドキュメントの部分を示します。
構文
このウィジェットを作成する簡単な構文は次のとおりです-
TkScrollbar.new {
.....Standard Options....
.....Widget-specific Options....
}
標準オプション
- アクティブ
- ハイライト
- オリエント
- フォーカス
- バックグラウンド
- ハイライトカラー
- 安心
- トラフ
- ボーダー幅
- ハイライト
- 繰り返し遅延
- カーソル
- jump *繰り返し間隔
これらのオプションは前の章で説明されています。
ウィジェット固有のオプション
Sr.No. | Options & Description |
---|---|
1 |
アクティブな要素がある場合、その要素を表示するときに使用する_relief_を指定します。 アクティブな要素以外の要素は、常に浮き彫りで表示されます。 |
2 |
スクロールバーに関連付けられたウィジェットのビューを変更するために呼び出すコールバックを指定します。 ユーザーがスクロールバーを操作してビューの変更を要求すると、コールバックが呼び出されます。 |
3 |
スクロールバーの内部要素の周囲に描かれる境界線の幅を指定します。 |
4 |
スクロールバーウィンドウの目的の狭い寸法を指定します。3次元の境界線(ある場合)は含まれません。 垂直スクロールバーの場合、これは幅になり、水平スクロールバーの場合、これは高さになります。 |
スクロールバーの要素
スクロールバーは、スクロールバーのメソッドで参照される5つの要素を表示します-
- arrow1 -スクロールバーの上矢印または左矢印。
- trough1 -スライダーとarrow1の間の領域。
- スライダー-関連するウィジェットに表示されるものを示す長方形。
- trough2 -スライダーと矢印2の間の領域。
- arrow2 -スクロールバーの下または右矢印。
スクロールバーの操作
スクロールバーのコンテンツを操作するための次の便利な方法-
- * activate(?element?)-_element_で示される要素をアクティブとしてマークします。これにより、 *activebackground および activerelief オプションで指定されたとおりに表示されます。 このコマンドで理解できる要素値は、 arrow1 、 slider 、または arrow2 のみです。
- * delta(deltaX、deltaY)*-スライダー位置の特定の変化に対応するスクロールバー設定のわずかな変化を示す実数を返します。
- * fraction(x、y)*-0と1の間の実数を返し、xとyで指定されたポイントがスクロールバーのトラフ領域のどこにあるかを示します。 値0はトラフの上部または左側に対応し、値1は下部または右側に対応し、0.5は中央に対応します。
- get -要素が最新のsetメソッドの引数であるリストの形式でスクロールバー設定を返します。
- * identify(x、y)*-xとyで指定されたポイントの下の要素の名前(arrow1など)、またはポイントがスクロールバーの要素にない場合は空の文字列を返します。 Xとyは、スクロールバーウィジェットに対するピクセル座標でなければなりません。
- * set(first、last)*-このコマンドは、スクロールバーに関連付けられているウィジェットによって呼び出され、ウィジェット内の現在のビューについてスクロールバーに通知します。 このコマンドは2つの引数を取ります。各引数は0〜1の実数部です。 分数は、関連付けられたウィジェットに表示されるドキュメントの範囲を示します。
イベントバインディング
Ruby/Tkは、スクロールバーに次のデフォルトの動作を与えるクラスバインディングを自動的に作成します。 動作が垂直スクロールバーと水平スクロールバーで異なる場合、水平動作は括弧で説明されています-
- 矢印1の上でボタン1を押すと、関連するウィジェットのビューが1単位だけ上(左)に移動し、ドキュメントが1単位下(右)に移動するように見えます。 ボタンが押されている場合、アクションは自動的に繰り返されます。
- trough1上のボタン1を押すと、関連するウィジェットのビューが1画面分上(左)に移動し、ドキュメントが1画面下(右)に移動するように見えます。 ボタンが押されている場合、アクションは自動的に繰り返されます。
- スライダー上でボタン1を押してドラッグすると、スライダーとともにビューがドラッグされます。 ジャンプオプションがtrueの場合、ビューはスライダーと一緒にドラッグされません。マウスボタンを放したときにのみ変化します。
- trough2上のボタン1を押すと、関連付けられたウィジェットのビューが1画面分下(右)に移動し、ドキュメントが1画面上に移動するように見えます(左)。 ボタンが押されている場合、アクションは自動的に繰り返されます。
- 矢印2の上でボタン1を押すと、関連するウィジェットのビューが1単位だけ下(右)に移動し、ドキュメントが1単位上(左)に移動するように見えます。 ボタンが押されている場合、アクションは自動的に繰り返されます。
- ボタン2がトラフまたはスライダー上で押されると、マウスの位置に対応するようにビューが設定されます。ボタン2を押しながらマウスをドラッグすると、ビューがマウスでドラッグされます。 ボタン2を矢印の1つで押すと、ボタン1を押すのと同じ動作になります。
- Ctrlキーを押しながらボタン1を押すと、マウスがarrow1またはtrough1の上にある場合、ビューはドキュメントの一番上(左)に変わります。マウスがarrow2またはtrough2の上にある場合、ビューはドキュメントの一番下(右)に変わります。マウスが他の場所にある場合、ボタンを押しても効果はありません。
- 垂直スクロールバーでは、上矢印キーと下矢印キーは、それぞれ矢印1と矢印2をマウスでクリックしたときと同じ動作をします。 水平スクロールバーでは、これらのキーは効果がありません。
- 垂直スクロールバーでは、Control-UpとControl-Downは、それぞれtrough1とtrough2上のマウスクリックと同じ動作をします。 水平スクロールバーでは、これらのキーは効果がありません。
- 水平スクロールバーでは、上矢印キーと下矢印キーの動作は、それぞれ矢印1と矢印2の上でのマウスクリックと同じです。 垂直スクロールバーでは、これらのキーは効果がありません。
- 水平スクロールバーでは、Control-UpとControl-Downは、それぞれtrough1とtrough2上のマウスクリックと同じ動作をします。 垂直スクロールバーでは、これらのキーは効果がありません。
- PriorキーとNextキーは、それぞれtrough1とtrough2をマウスでクリックしたときと同じ動作をします。
- Homeキーは、ビューをドキュメントの上部(左端)に調整します。 *Endキーは、ドキュメントの下部(右端)にビューを調整します。
例
require "tk"
list = scroll = nil
list = TkListbox.new {
yscroll proc{|idx|
scroll.set* idx
}
width 20
height 16
setgrid 1
pack('side' => 'left', 'fill' => 'y', 'expand' => 1)
}
scroll = TkScrollbar.new {
command proc{|idx|
list.yview *idx
}
pack('side' => 'left', 'fill' => 'y', 'expand' => 1)
}
for f in Dir.glob("*")
list.insert 'end', f
end
Tk.mainloop
これは、次の結果を生成します-