🙂

Ruby/TkのTkLabelが動的に変更できない

2021/09/27に公開

ラベルとボタンで変数(TkVariable)を共有

ボタンのクリックイベントでラベルの内容を変更したかったのでラベルに変数を設定して共有を図ったけど、その変数を変更してもラベルに表示されないし、そもそも、初期表示で変数の初期値がラベルに表示されていない。

オプションの設定箇所が原因だった

Ruby/Tkの「メソッド new はブロックを受け取ることができます。」という記述を見たのでオプション設定をブロックで行っていたら、変更できなかった。
newの引数で設定すると期待した動きになった。

@var = TkVariable.new('Not set')
#うまく動かない
TkLabel.new(top) {textvariable @var}.pack
#期待通り動く
TkLabel.new(top, textvariable: @var).pack

Discussion