MadLibsプログラムにTKを使用してRubyでGUIを作成しようとしています。基本的に、エントリウィジェットからユーザーの入力を受け取り、テキスト行の特定の単語をその情報に置き換える必要があります。関連するコードは次のとおりです($ contentは親ウィンドウです)。
$name=TkVariable.new()
name=Tk::Tile::Entry.new($content) {width 7; textvariable $name}.grid(:column =>1, :row =>0, :sticky => 'we')
# Mad Lib base text
$text=TkVariable.new("My name is #{name.get}.")
# Displays end result
def showResult
display=Tk::Tile::Label.new($content) {textvariable $text}.grid(:column =>0, :row => 6, :sticky => 'we')
end
# Button to replace input in base text.
# Clicking this button adds a new Label widget containing the text. The variables,
#however, retain whatever value they were initialized to (in this case, nothing)
Tk::Tile::Button.new($content) {text 'Submit'; command 'showResult'}.grid(:column => 1, :row => 5, :sticky => 'we')
私が理解しているように、name.getは、エントリウィジェットのフィールドに入力したものをすべて表示するはずです。しかし、nameも$nameも更新されません。