Ruby-tk-menubutton

提供:Dev Guides
移動先:案内検索

Ruby/TK-メニューボタンウィジェット

説明

*menubutton* は、テキスト文字列、ビットマップ、または画像を表示するウィジェットで、メニューウィジェットに関連付けられています。 テキストが表示される場合、すべて単一のフォントである必要がありますが、画面上で複数行を占めることができます(改行が含まれている場合、または_wraplength_オプションのために折り返しが発生する場合)。オプション。

通常の使用法では、メニューボタン上でマウスボタン1を押すと、関連するメニューがメニューボタンのすぐ下に表示されます。 マウスボタンを放す前にマウスをメニュー上に移動すると、ボタンを放すと、基になるメニューエントリが呼び出されます。 ボタンを離すと、メニューはポストされません。

メニューボタンは通常、スキャンを可能にするメニューバーと呼ばれるグループに編成されます:マウスボタンを1つのメニューボタン上で押し、マウスを同じメニューバー内の別のメニューボタン上でマウスボタンを離さずに移動すると、最初のメニューボタンのメニューはポストされません代わりに、新しいメニューボタンのメニューが投稿されます。

構文

このウィジェットを作成する簡単な構文は次のとおりです-

TkMenubutton.new(root) {
   .....Standard Options....
   .....Widget Specific Options....
}

標準オプション

  • アクティブ
  • カーソル
  • ハイライト
  • フォーカス
  • アクティブ
  • 無効
  • 画像
  • text
  • アンカー
  • font
  • 正当化する
  • テキスト変数
  • バックグラウンド
  • 前景
  • padx
  • 下線を引く
  • ビットマップ
  • ハイライト
  • pady
  • ラップ長
  • ボーダー幅
  • ハイライトカラー *安心

これらのオプションは前の章で説明されています。

ウィジェット固有のオプション

Sr.No. Options & Description
1
  • compound* ⇒ String

ボタンに画像とテキストの両方を表示するかどうかを指定します。表示する場合は、テキストに対して画像を配置する場所を指定します。 このオプションの有効な値は、 bottomcenterleftnoneright 、および top です。 デフォルト値は none です。これは、_image_および_bitmap_オプションの値に応じて、ボタンに画像またはテキストが表示されることを意味します。

2
  • direction *⇒ String

メニューをポップアップする場所を指定します。* 上*は、メニューボタンの上にメニューをポップしようとします。 下*は、メニューボタンの下にメニューをポップしようとします。 *左*は、メニューボタンの左側にメニューをポップしようとします。 *right は、メニューボタンの右側にメニューをポップしようとします。 flush は、メニューボタンの上に直接メニューをポップします。

3
  • height *⇒ Integer

メニューボタンの希望の高さを指定します。

4
  • indicatoron *⇒ Boolean

値は適切なブール値でなければなりません。 trueの場合、小さなインジケータ四角形がメニューボタンの右側に表示され、デフォルトのメニューバインディングはこれをオプションメニューボタンとして扱います。 falseの場合、インジケーターは表示されません。

5
  • menu *⇒ String

このメニューボタンに関連付けられているメニューのパス名を指定します。 メニューはmenubuttonの子である必要があります。

6
  • state* ⇒ String

メニューボタンの3つの状態、 normalactive 、または 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

これは、次の結果を生成します-

Ruby/Tk Menubutton