这可能是一个非常简单的问题,但我一直在寻找它并且还没有找到任何有效的答案......
我尝试使用ruby做一个鞋子应用程序来获取名称列表并将其保存在文件中。我想显示已经引入的列表,并且当新名称进入列表时,显示的列表将被更新。此外,我想将删除按钮与列表中的每个元素相关联,以便用户可以根据需要删除该名称。
毕竟,我唯一能得到的就是你添加一个名字的部分,它被保存到一个列表中,但是在第二个堆栈中添加了一个带有删除按钮的所有名称的列表...不是这样幸运。这就是我的代码的样子,addName和saveFile函数不在这里,但它们只对列表做了一些工作。此外,未显示某些全局变量和constat定义:
Shoes.app(title: "My Higgs field!",
width: APPW, height: APPH, resizable: false) {
stack{
flow{
@edit = edit_line
@enter = button "Add"
@enter.click do
info "Enter to add #{@edit.text}"
addName(@edit.text)
end
}
@save_file = button "Guardar ficheiro"
@save_file.click do
saveFile
end
}
stack do
# Show a list with all the names inserted
$names.each do |name|
flow{
@line = para name
info "Putting line #{@line}"
@delete = button "Apagar"
@delete.click do
deleteName name
end
}
end
end
}
对此的任何意见都非常好!
非常感谢!
答案 0 :(得分:0)
鞋问题这么久没有回答!那不可能。 这是一个完全正常工作的版本,我冒昧地重新组织一切,并使用我最喜欢的鞋子颜色:绿色
require 'green_shoes'
Shoes.app(title: "My Higgs field!", width: 200, height: 200, resizable: false) do
@names, @list = [], nil
def update
@list.clear()
@names.each do |name|
@list.append do
flow do
para link('del'){del(name); update}, ' ', name
end
end
end
end
def add name
@names << name
@names = @names.uniq.sort
update
end
def del name
@names.delete(name)
update
end
stack do
flow do
@edit = edit_line(width: 110, height: 23)
keypress do|k|
if k == "\n"
add(@edit.text)
end
end
button "Add" do
add(@edit.text)
end
button "Save file" do
File.open("names.txt", "w+") { |file| file.write(@names.join("\n")) }
alert("names.txt is saved")
end
end
@list = flow do
@names.each do |p|
para p, :size => 10
end
end
end
end