用于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。
答案 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