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 宮木 昌広