新規作成  編集  Ruby-GNOME2 Project Website  ページ一覧  検索  更新履歴  編集履歴  RSS  ログイン

gtk2-tut-togglebutton

トグルボタン

toggle_button.png トグルボタンは普通のボタンから派生したもので普通のボタンと非常に似ているが, クリックによって二つの状態のうちの一つを交互にとる点が異なる. 押し下げられている状態の時にクリックすると,持ち上がる.再度クリックすると,押し下げられる.

トグルボタンはチェックボタンとラジオボタンの土台であり, トグルボタンの多くの呼び出しはラジオボタンとチェックボタンに継承されている. これらについてはラジオボタン,チェックボタンの項目で指摘しよう.

新しいトグルボタンを作成するには:

Gtk::ToggleButton.new(label = nil, underline = false)
Gtk::ToggleButton.new(stock)

容易に想像できるように,これらは普通のボタンウィジェットの呼び出しと同じように働く. 最初のものはラベルウィジェットをあらかじめパックしたトグルボタンを, 2番目のものはStockItemをあらかじめパックしたトグルボタンを作成する.

トグルボタン(ラジオボタンおよびチェックボタンを含む)の状態はactive?で取得できる. トグルボタン(ラジオボタンおよびチェックボタンを含む)固有のシグナルに"toggled"シグナルがある. ボタンの状態をチェックするにはシグナルハンドラを設定して"toggled"シグナルを拾い, active?メソッドで状態を取得する.

$ irb
irb(main):001:0> require 'gtk2'
=> true
irb(main):002:0> button = Gtk::ToggleButton.new
=> #<Gtk::ToggleButton:0x0a29a6a0 ptr=0x0a34f338>
irb(main):003:0> button.signal_connect("toggled") do
irb(main):004:1*   puts "state = #{button.active?}"
irb(main):005:1> end
=> 1
irb(main):006:0> button.signal_emit("clicked")
state = true
=> nil
irb(main):007:0> button.signal_emit("clicked")
state = false
=> nil
irb(main):008:0> button.signal_emit("clicked")
state = true
=> nil
irb(main):009:0> button.signal_emit("toggled")
state = true
=> nil
irb(main):010:0> button.signal_emit("toggled")
state = true
=> nil

"clicked"シグナルによってトグルボタンの状態が変化し, その結果として"toggled"シグナルが発行されハンドラブロックが実行されていることが分かる. "toggled"シグナルを発行してもボタンの状態は変化しない.

トグルボタン(それとその子供であるラジオボタンとチェックボタン)の状態を強制的に変えるには 次のメソッドを使う:

Gtk::ToggleButton#active=(state)
Gtk::ToggleButton#set_active(state)

引数stateがtrueの場合はボタンは押し下げられた状態になり,falseの場合はボタンが上がった状態となる.

注意: Gtk::ToggleButton#set_activeを使い状態が実際に変更されると, トグルボタンから"clicked"シグナルが発行される.

irb(main):011:0> button.signal_connect("clicked") do
irb(main):012:1*   puts "clicked"
irb(main):013:1> end
=> 2
irb(main):014:0> button.active = true
=> true
irb(main):015:0> button.active = false
state = false
clicked
=> false
irb(main):016:0> button.active = true
state = true
clicked
=> true
更新日時:2005/05/22 02:42:35
キーワード:
参照:[gtk2-tut] [gtk2-tut-radiobutton]