Kazunori Akaishi <akaishi / ruby.freak.ne.jp> wrote:

>|akaishi といいます。

宮木です。
アドバイスありがとうございます。

>|Gtk+ の実装を追ったわけではないので以下の話は半分推測ですが、
>|
>|メニューを開いているときは、各メニューアイテムが見えており、その child 
>|であるラベルも取得することができます。
>|
>|しかしTEST ボタンを押すとき、目に見えているのはメニューではなくてオプショ
>|ンメニュー(のみ)です。そしてどうやらラベルはメニューアイテムではなく(一
>|時的に)オプションメニューに親がすげかえられている(?)ようです。

-<cut>-

>|よって、
>|
>|> bt.signal_connect('clicked'){
>|>   puts menu.get_active
>|>   puts menu.get_active.child.get_text
>|> }
>|
>|ではなくて、
>|
>|bt.signal_connect('clicked'){
>|  puts opt.children[0].get
>|}
>|
>|で望みの動作をすると思います。オプションメニューは Gtk::Container から派
>|生しており、children は Gtk::Container のメソッドです。

この方法なんですが、実は私も試してはみたものの

  opt.children.each{|val| puts val.type}

とやると分りますが、childrenには1つ目の要素にfalseという
値が入っているだけで、希望の結果は得られませんでした。今回
は、先にメールを頂いた岡本さんの方法で希望の結果が得られま
したのでそちらの方法で実現したいと思います。

ともあれ、ご指摘ありがとうございました。

>|あと関係ないですが、vbox = Gtk::VBox.new の部分は引数がないとエラーにな
>|ります。

そうですか。ruby-gtk-0.19では引数無しもOKのようです。

>|さらに関係ないですが、menuitem = Gtk::MenuItem.new text の部分は ruby
>|1.2 系ではエラーになりますね。

私は1.3.4を使っていたので気付きませんでした。失礼しました。
--
E-mail miyaki / wni.co.jp 宮木 昌広