Ruby-tk-menubutton
Ruby/TK-メニューボタンウィジェット
説明
*menubutton* は、テキスト文字列、ビットマップ、または画像を表示するウィジェットで、メニューウィジェットに関連付けられています。 テキストが表示される場合、すべて単一のフォントである必要がありますが、画面上で複数行を占めることができます(改行が含まれている場合、または_wraplength_オプションのために折り返しが発生する場合)。オプション。
通常の使用法では、メニューボタン上でマウスボタン1を押すと、関連するメニューがメニューボタンのすぐ下に表示されます。 マウスボタンを放す前にマウスをメニュー上に移動すると、ボタンを放すと、基になるメニューエントリが呼び出されます。 ボタンを離すと、メニューはポストされません。
メニューボタンは通常、スキャンを可能にするメニューバーと呼ばれるグループに編成されます:マウスボタンを1つのメニューボタン上で押し、マウスを同じメニューバー内の別のメニューボタン上でマウスボタンを離さずに移動すると、最初のメニューボタンのメニューはポストされません代わりに、新しいメニューボタンのメニューが投稿されます。
構文
このウィジェットを作成する簡単な構文は次のとおりです-
TkMenubutton.new(root) {
.....Standard Options....
.....Widget Specific Options....
}
標準オプション
- アクティブ
- カーソル
- ハイライト
- フォーカス
- アクティブ
- 無効
- 画像
- text
- アンカー
- font
- 正当化する
- テキスト変数
- バックグラウンド
- 前景
- padx
- 下線を引く
- ビットマップ
- ハイライト
- pady
- ラップ長
- ボーダー幅
- ハイライトカラー *安心
これらのオプションは前の章で説明されています。
ウィジェット固有のオプション
Sr.No. | Options & Description |
---|---|
1 |
ボタンに画像とテキストの両方を表示するかどうかを指定します。表示する場合は、テキストに対して画像を配置する場所を指定します。 このオプションの有効な値は、 bottom 、 center 、 left 、 none 、 right 、および top です。 デフォルト値は none です。これは、_image_および_bitmap_オプションの値に応じて、ボタンに画像またはテキストが表示されることを意味します。 |
2 |
メニューをポップアップする場所を指定します。* 上*は、メニューボタンの上にメニューをポップしようとします。 下*は、メニューボタンの下にメニューをポップしようとします。 *左*は、メニューボタンの左側にメニューをポップしようとします。 *right は、メニューボタンの右側にメニューをポップしようとします。 flush は、メニューボタンの上に直接メニューをポップします。 |
3 |
メニューボタンの希望の高さを指定します。 |
4 |
値は適切なブール値でなければなりません。 trueの場合、小さなインジケータ四角形がメニューボタンの右側に表示され、デフォルトのメニューバインディングはこれをオプションメニューボタンとして扱います。 falseの場合、インジケーターは表示されません。 |
5 |
このメニューボタンに関連付けられているメニューのパス名を指定します。 メニューはmenubuttonの子である必要があります。 |
6 |
メニューボタンの3つの状態、 normal 、 active 、または disabled のいずれかを指定します。 通常の状態では、メニューボタンは foreground および background オプションを使用して表示されます。 |
7 |
width ⇒ Integer メニューボタンの幅を指定します。 |
イベントバインディング
Ruby/Tkは、メニューボタンのクラスバインディングを自動的に作成し、次のデフォルトの動作を提供します-
- メニューボタンは、マウスがその上を通過するたびにアクティブになり、マウスが離れるたびに非アクティブになります。
- メニューボタン上でマウスボタン1を押すと、メニューボタンがポストされます。レリーフが浮き上がり、関連するメニューがメニューボタンの下にポストされます。 ボタンを押したままマウスをメニューにドラッグし、メニューのエントリ上でマウスボタンを離すと、メニューボタンはポストされず、メニューエントリが呼び出されます。
- ボタン1がメニューボタン上で押され、そのメニューボタン上で放された場合、メニューボタンはポストされたままになります。メニュー上でマウスを動かし、エントリのボタン1をクリックして呼び出すことができます。 メニューエントリが呼び出されると、menubuttonはそれ自身のポストを解除します。
- ボタン1がメニューボタン上で押された後、他のメニューボタン上でドラッグされると、元のメニューボタンはそれ自身のポストを解除し、新しいメニューボタンはポストします。
- ボタン1がメニューボタン上で押され、メニューボタンまたはメニューの外でリリースされると、メニューボタンはメニューエントリを呼び出さずにポストを解除します。
- メニューボタンがポストされると、その関連メニューは、メニューとそのサブメニューのキーボードトラバースを許可する入力フォーカスを要求します。
- メニューボタンに下線オプションが指定されている場合、キーボードトラバーサルを使用してメニューボタンをポストできます:Alt + x(xは下線付き文字(またはその小文字または大文字に相当))は、任意のウィンドウに入力できますメニューボタンのトップレベルの下にメニューボタンを投稿します。
- F10キーを任意のウィンドウに入力して、無効化されていないトップレベルウィンドウの下に最初のメニューボタンを表示できます。
- メニューボタンに入力フォーカスがある場合、スペースキーとリターンキーがメニューボタンをポストします。
メニューボタンの状態が*無効*の場合、上記のアクションは発生しません。メニューボタンは完全に応答しません。
例
require "tk"
mbar = TkFrame.new {
relief 'raised'
borderwidth 2
}
mbar.pack('fill' => 'x')
TkMenubutton.new(mbar) {|mb|
text "File"
underline 0
menu TkMenu.new(mb) {
add 'command', 'label' => 'New...', 'underline' => 0,
'command' => proc {print "opening new file\n"}
add 'command', 'label' => 'Quit',
'underline' => 0, 'command' => proc{exit}
}
pack('side' => 'left', 'padx' => '1m')
}
TkMenubutton.new(mbar) {|mb|
text "Help"
underline 0
menu TkMenu.new(mb) {
add 'command', 'label' => 'About', 'underline' => 0,
'command' => proc {print "This is menu example.\n"}
}
pack('side' => 'left', 'padx' => '1m')
}
Tk.mainloop
これは、次の結果を生成します-