山本です。

いじっているうちに気づいたのですが、TkVariable.new_hash 経由で
取得した TkVariable では trace が使用できないようです。これは
意図された挙動でしょうか?

////////////////////////////////////////////////////////
// コード

require 'tk'

v1 = TkVariable.new(false)
hash = TkVariable.new_hash(:hoge => false) # keep reference?
v2 = hash.ref(:hoge)

p [v1, v2]

v1.trace('w', proc { puts 'v1' })
v2.trace('w', proc { puts 'v2' })

TkCheckbutton.new(:text=>'v1', :variable=>v1).pack
TkCheckbutton.new(:text=>'v2', :variable=>v2).pack

Tk.mainloop

////////////////////////////////////////////////////////
// 結果(チェックボタン両方を交互に押した)

E:\ruby-cvs\bcc32>ruby19 \x.rb
[#<TkVariable: v00000>, #<TkVariable: v00001(hoge)>]
v1
v1
v1