[#42454] 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...>

出沢です

22 messages 2006/06/22
[#42455] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — rubikitch <rubikitch@...> 2006/06/22

From: しん <dezawa@aliadne.net>

[#42456] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...> 2006/06/23

出沢です

[#42458] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — rubikitch <rubikitch@...> 2006/06/23

From: しん <dezawa@aliadne.net>

[#42459] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...> 2006/06/23

出沢です

[#42460] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — rubikitch <rubikitch@...> 2006/06/23

From: しん <dezawa@aliadne.net>

[#42461] Re: 多量の正規表現との効率的なマッチのアイデアを、、 — しん <dezawa@...> 2006/06/23

出沢です。

[ruby-list:42359] Re: TkCanvasの座標

From: Masato Ishimoto <i@...>
Date: 2006-06-04 23:04:42 UTC
List: ruby-list #42359
おはようございます。いしもとです。
永井さん、アドバイスありがとうございます。

On Jun 5, 2006, at 3:45 AM, Hidetoshi NAGAI wrote:
>>  2につきましては、アドバイスいただいたコードでも状況は変わ 
>> りま
>> せんでした。
>>  具体的には、提示いただいたコードによって、
>> ・x座標の表示は改善され、左端の縦線も表示されるように 
>> なった。
>> ・しかし、y座標は相変わらずずれたまま。y座標を
>> 0に設定すると線が表示されない。
>> ・y座標の値を1にすると線が表示される。これにカー 
>> ソル
>> を乗せると、y座標は0。
>> という状況です。
> x_line = TkcLine.new(canvas, 0, 1, 200, 1) で描画した線の上に
> カーソルをきちんと重ねたにもかかわらず,
> y 座標が 0.0 と表示されるということでしょうか?
> 同様に x_line2 = TkcLine.new(canvas, 0, 50, 200, 50) と 
> したとしたら
> カーソルをきちんと重ねた場合に y 座標が 49.0 と
> 表示されるということでしょうか?

はい。カーソルがtcrossですので、黒い線の上にカーソルを合わ 
せると
白く反転します。それを基準にすると、y座標は必ず1ずれ 
ています。
x_line2 = TkcLine.new(canvas, 0, 50, 200, 50) とした場合、 
y座標は
49.0となってしまいます。

> だとすると,これは奇妙な状況です.
> 間違いなくその通りなら,Tcl/Tk 上の問題かもしれません.
> 念のため,scrollregion を [0, 0, 201, 201] とした 
> 上で
> canvas.bind('Motion',
>             proc{|x, y|
>               enx.text = "#{x}:#{xp=canvas.canvasx(x)}"
>               eny.text = "#{y}:#{yp=canvas.canvasx(y)}"
>             },'%x %y' )
> などとして確認してみていただけないでしょうか.
> ついでに Tk::TK_PATCHLEVEL の値もいただけると嬉しいです.

この状態でx_line2とy_line2の交点にカーソルを合わせる 
と、
x= 53 : 50.0
y= 52 : 49.0
と表示されます。
Tk::TK_PATCHLEVELは8.4.7と表示されました。
因みに、前回のお話の中にあったcanvas.winfo_widthと
canvas.winfo_heightもpしてみましたが、両方とも1と表示
されました。この辺りも??です。
OSなども関係しているのでしょうか・・・?

以下、今回のコードです。
________________________________
require 'tk'
xp=0
yp=0
root=TkRoot.new
f=TkFrame.new(root)
lbx=TkLabel.new(f){text 'x='}.pack('side'=>'left')
enx=TkLabel.new(f){text xp}.pack('side'=>'left')
lby=TkLabel.new(f){text 'y='}.pack('side'=>'left')
eny=TkLabel.new(f){text yp}.pack('side'=>'left')
f.pack('side'=>'top')

canvas=TkCanvas.new(root,
                   'height'=>201,
                   'width'=>201,
                   'scrollregion'=>[0,0,201,201],
                   'cursor'=>'tcross'
                   ).pack('side'=>'top')

x_line=TkcLine.new(canvas,0,0,200,0)
x_line2=TkcLine.new(canvas,0,50,200,50)
y_line=TkcLine.new(canvas,0,0,0,200)
y_line2=TkcLine.new(canvas,50,0,50,200)

canvas.bind('Motion',
             proc{|x, y|
               enx.text = "#{x}:#{xp=canvas.canvasx(x)}"
               eny.text = "#{y}:#{yp=canvas.canvasx(y)}"
             },'%x %y' )

p Tk::TK_PATCHLEVEL	# => 8.4.7
p canvas.winfo_width		# => 1
p canvas.winfo_height	# => 1

Tk.mainloop
_________________________________
いしもと まさと





In This Thread