Ruby Shoes GUI:不断更新段落

时间:2013-08-05 20:44:14

标签: ruby shoes

用于Ruby的Shoes GUI工具包似乎是一种非常好的简单方法,可以在我的各种脚本中添加GUI,但是在对它进行敲击之后,我似乎无法通过循环不断更新段落。

这是我的最小代码,用于展示我正在尝试做的事情:

Shoes.app do
    stack do
        @exit = button "Exit"
        @log = stack { para "Logging goes here..." }
        @exit.click { exit }

    end

    loop do
        sleep 1
        contents = `ls`
        @log.append { para contents }
    end

end

但这只是永远阻止,我的GUI永远不会出现,直到我杀死ruby进程,此时我的所有信息都出现了。

我已经尝试将“内容”检查循环添加到一个单独的类中,在其自己的“堆栈”或“流”循环中,尝试将@log传递给单独的类的方法,如“块重定向”标题在鞋子规则(http://shoesrb.com/manual/Rules.html)中,在尝试了我能想到的一切之后仍然没有快乐。我有什么想法可以让这个工作吗?我想我还没有完全掌握鞋子如何设置GUI。

2 个答案:

答案 0 :(得分:2)

您似乎需要every方法(搜索here)。每个方法都会每秒调用一次代码(或者传入的代码数量为秒)。

应该像这样工作:

every do
  # your appending code
end

(可能需要1作为参数,而不是100%确定atm)

答案 1 :(得分:2)

如果您希望列出目录中的所有文件并每秒刷新一次列表,那么我认为这就是您正在寻找的内容:

Shoes.app do

  stack do
    @btn_exit = button("Exit") {exit}
    @log = para "Logging goes here..."
  end

  every 1 do
    @log.text = Dir.entries('C:/Test').select{|file| file != "."*file.length}.join("\n")
  end

end