这可能是一个非常简单的问题,但我已经搜索了很长时间,还没有找到任何有效的答案。。。
我试着用ruby开发一个Shoes应用程序,得到一个名字列表并保存到一个文件中我想显示已经引入的列表,当一个新名称进入列表时,显示的列表将被更新另外,我想将一个delete按钮关联到列表的每个元素,以便用户可以在需要时删除该名称。
在所有这些之后,我唯一能得到的是你添加一个名字并将其保存到列表中的部分,但是添加第二个堆栈时,使用一个delete按钮添加一个包含所有名字的列表…没那么幸运。这就是我的代码的样子,函数addName和saveFile不在这里,但它们只处理列表此外,一些全局变量和常量定义未显示:

 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
 }

任何关于这方面的投入都是非常好的!
谢谢!

最佳答案

一个鞋子问题好久没有回答了那不可能。
这是一个完全可行的版本,我随意地重新组织了一切,并使用了我最喜欢的鞋子颜色:绿色

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

09-25 18:57