2

Ruby 的鞋子 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

但这只会永远阻塞,直到我终止 ruby​​ 进程,我的 GUI 才会出现,此时我的所有信息都会出现。

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

4

2 回答 2

2

看来您需要该every方法(在此处搜索)。every 方法将每秒调用您的代码(或与您传入的秒数一样多)。

应该像这样工作:

every do
  # your appending code
end

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

于 2013-08-10T20:23:37.757 回答
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
于 2013-08-10T21:21:24.463 回答