Вероятно, он ничего не напечатает, потому что ваша кнопка и list_box пытаются вызвать @unit.text
, поэтому вы должны продолжить определять @unit
.
Я думаю, что это, возможно, та же самая причина, по которой он не выберет "C" по умолчанию. В то время, когда вы выбираете «C», @unit
не определено.
Попробуйте это:
@list_box = list_box :items => ["C", "F"]
line1 = edit_line :width => 100
button 'Compute' do
@result.text = convert(line1.text, @unit.text)
end
@unit = para
@list_box.change{|item|
@unit.text = item.text
}
@list_box.choose("C")
Я не уверен, нужно ли вам отделять метод change
от списка, но я сделал это, чтобы быть в безопасности.
РЕДАКТИРОВАТЬ: 2012-01-31 13: 29
Shoes.app :title=> 'Temperature Converter', :width => 200, :height => 200 do
def convert(temp, unit='C')
@unit.text = unit
if unit == "C"
(temp.to_i * 9.0 / 5.0) + 32.0
elsif unit == "F"
"Fail"
end
end
@list_box = list_box :items => ["C", "F"]
line1 = edit_line :width => 100
button 'Compute' do
@result.text = convert(line1.text, @list_box.text)
end
@unit = para
@list_box.choose("C")
@result = para
end