[#39984] ruby/tk のイベントハンドラをまとめて設定するには? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
9 messages
2004/09/01
[#39985] Re: ruby/tk のイベントハンドラをまとめて設定するには?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/09/01
山本です。
[#39989] TCPSocket.new でスレッドが止まる。 — take_tk <ggb03124@...>
たけ(tk)です。
15 messages
2004/09/02
[#39992] Re: TCPSocket.new でスレッドが止まる。
— nobu@...
2004/09/02
なかだです。
[#39993] Re: TCPSocket.new でスレッドが止まる。
— take_tk <ggb03124@...>
2004/09/02
たけ(tk)です
[#39996] Re: TCPSocket.new でスレッドが止まる。
— Yukihiro Matsumoto <matz@...>
2004/09/02
まつもと ゆきひろです
[#40013] ruby/tkについて — skoba@... (KOBAYASHI Satoshi)
小林@島根大学です。
5 messages
2004/09/07
[#40018] yaml.rbとdate.rbを組み合わせて使った際の問題 — "Keisuke Minami" <keisuke@...>
こんにちは。三並と申します。
14 messages
2004/09/07
[#40020] Re: yaml.rbとdate.rbを組み合わせて使った際の問題
— IWATSUKI Hiroyuki <don@...>
2004/09/07
岩月と申します。
[#40022] Re: yaml.rbとdate.rbを組み合わせて使った際の問題
— nobu@...
2004/09/07
なかだです。
[#40028] Re: yaml.rbとdate.rbを組み合わせて使った際の問題
— Yukihiro Matsumoto <matz@...>
2004/09/07
まつもと ゆきひろです
[#40033] Re: yaml.rbとdate.rbを組み合わせて使った際の問題
— nobu@...
2004/09/08
なかだです。
[#40035] Re: yaml.rbとdate.rbを組み合わせて使った際の問題
— Yukihiro Matsumoto <matz@...>
2004/09/08
まつもと ゆきひろです
[#40021] 動的なクラス名 — "fuji@..." <fuji@...>
藤岡です。
9 messages
2004/09/07
[#40056] Ruby本読書会 — MoonWolf <moonwolf@...>
MoonWolfです。
7 messages
2004/09/18
[ruby-list:40055] MultiTkIp class
From:
Hidetoshi NAGAI <nagai@...>
Date:
2004-09-17 08:17:00 UTC
List:
ruby-list #40055
永井@知能.九工大です.
ruby-dev でもちょっと触れたのですが,multi-tk.rb / remote-tk.rb の
改善を進めておりました.
最新の修正で添付のようなスクリプトでもなんとか動くようになりました
(と思う (^_^;) ので,よかったら試してみてください.
----------------------------------------------------
require 'multi-tk.rb'
th = Thread.new{Tk.mainloop}
TkLabel.new(:text=>'this is a primary master').pack
ip1 = MultiTkIp.new_slave(:safe=>1)
ip2 = MultiTkIp.new_slave(:safe=>2)
cmd = proc{
require 'tk'
TkButton.new(:text=>'b1: p self', :command=>proc{p self}).pack(:fill=>:x)
sleep 0.5
TkButton.new(:text=>'b2: p $SAFE', :command=>proc{p $SAFE}).pack(:fill=>:x)
sleep 0.5
TkButton.new(:text=>'b3: p MultiTkIp.ip_name',
:command=>proc{p MultiTkIp.ip_name}).pack(:fill=>:x)
sleep 0.5
TkButton.new(:text=>'EXIT', :command=>proc{exit}).pack(:fill=>:x)
Tk.mainloop
}
Thread.new{ip1.eval_proc(cmd)}
Thread.new{ip2.eval_proc(cmd)}
cmd.call
th.join
----------------------------------------------------
見てもらうとわかりますが,cmd に代入しているプロシージャは
一般的な Ruby/Tk スクリプトの形をしています.
ですから,もちろん実行するインタープリタについてのパラメータは
明示的には存在していません.
これを master, ip1, ip2 の三つの Tk インタープリタで
*同時に* 実行させています.
にもかかわらず,各ボタンは各インタープリタの root ウィンドウに
適切に生成され,コールバックも各インタープリタの safe-level
(master は $SAFE==0, ip1 は $SAFE==1, ip2 は $SAFE==2) で
実行されます.
また,master の exit 関数が Ruby 自体を終了させているのに対し,
ip1, ip2 ではそれぞれのインタープリタだけを終了します.
これは,ちょっとしたトリックを使って実現しているわけですが,
一般的なスクリプトをそのままにスレーブインタープリタの上で
実行でき,しかもマスターインタープリタからその状態を参照したり
変更したりできるというのがミソです.
Tcl/Tk の ::safe:: ベースのインタープリタを生成して $SAFE==4 の
環境で実行したりもできますし,Ruby/Tk スクリプトのテスト環境を
作ったりするのにも役立つのではないかと思ってます.
触ってみようと思われた方は,CVS から最新の source を入手して
試してみてください.
# 1.8.x でも 1.9.x でもどちらでもいいはずです.
ext/tk/sample にもいくつかのサンプルスクリプトがありますので,
ついでにそちらも試してみていただけると幸いです.
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp