« キングソロモン | トップページ | 時の娘 »

ボタンonボタン

 しばらくぶりに Ruby/Tk を使ってみたら、なんとも奇妙な状況に遭遇。一見なんの問題もないように思ったのだけれど、実行してみると奇妙なことに。

require 'tk'
f = b = fb = []
3.times do |i|
 f[i] = TkFrame.new.pack
 3.times do |j|
  k = i * 3 + j
  b[k] = TkFrame.new(f[i]).pack('side' => 'left')
  b[k] = TkButton.new(fb[k], 'text' => "#{k + 1}", 'width' => 7).pack
 end
end
Tk.mainloop

Tkframeeach


 なぜか一行目だけボタンの上にボタンが表示されてしまう。二行目以降は問題ないのに。

 あれこれしている中でふと次のようにしてみたら、なぜか解消された。謎。まあ、こういう例は pack を使わずに grid を使うべきといってしまえば、それまでなのだけれど。

require 'tk'
f = Array.new(3)
fb = b = Array.new(9)
3.times do |i|
 f[i] = TkFrame.new.pack
 3.times do |j|
  k = i * 3 + j
  fb[k] = TkFrame.new(f[i]).pack('side' => 'left')
  b[k] = TkButton.new(fb[k], 'text' => "#{k + 1}", 'width' => 7).pack
 end
end
Tk.mainloop

Tkframeeach2


|

« キングソロモン | トップページ | 時の娘 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: ボタンonボタン:

« キングソロモン | トップページ | 時の娘 »