From: Shigeaki Kinoshita Date: 2003-10-26T13:05:27+09:00 Subject: [ruby-list:38673] Re: Ruby/Tkの終了時の挙動 木下です。 永井さんありがとうございます。 『Rubyアプリケーションプログラム』を読んで勉強しています。 On Sun, 26 Oct 2003 06:51:34 +0900 Hidetoshi NAGAI wrote: > > --------------------------------------------------------- > > #テストプログラム(tkversion.rb) > > require 'tk' > > TkButton.new(nil, > > 'text'=>Tk::TK_VERSION, > > 'command'=>proc{exit}).pack > > Tk.mainloop > > --------------------------------------------------------- > > このスクリプトの場合,Tk.mainloop が適切に終了すれば > スクリプト自体も正常に終了するわけですから, > ボタンを押した際に root widget を破壊するように > すればいいと思われます. > > # root widget 破壊 -> Tk のイベントループの正常終了 > # -> Ruby 側に制御が戻る -> Ruby 終了 なるほど、流れが理解できました。 > root widget を破壊するには例えば TkRoot.new.destroy > ですが,この場合にやりたいことにイメージとして近いのは > Tk.exit (実体は Tk 上での 'destry .' の実行) でしょうね. proc{exit} を proc{TkRoot.new.destroy} と proc{Tk.exit} の それぞれに変更して試してみました。 結果、mswin版、cygwin版どちらも正常終了するようになりました。 教えていただいてありがとうございます。 スクリプトがきちんと終了できるようになって嬉しいです。 -- 木下 成顕 QZT05560@nifty.ne.jp 友紀野のタンポポ畑 http://www.tannpopo-yukino.com/