Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Shoes GUI:不断更新段落_Ruby_Shoes - Fatal编程技术网

Ruby Shoes GUI:不断更新段落

Ruby Shoes GUI:不断更新段落,ruby,shoes,Ruby,Shoes,Ruby的Shoes GUI kit似乎是一个非常好的简单的方法,可以将GUI添加到我的各种脚本中,但是在我的头撞到它之后,我似乎无法用循环不断地更新段落 下面是我的最简单代码,以显示我正在尝试执行的操作: Shoes.app do stack do @exit = button "Exit" @log = stack { para "Logging goes here..." } @exit.click { exit } end

Ruby的Shoes GUI kit似乎是一个非常好的简单的方法,可以将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进程,这时我所有的信息都会显示出来


我试着将内容检查循环和追加放在一个单独的类中,放在它自己的堆栈或流循环中,试着按照Shoes规则中的块重定向头将@log传递给一个单独类的方法,在尝试了我能想到的一切之后,仍然没有任何乐趣。你知道我该怎么做吗?我想我只是没有完全掌握Shoes是如何设置GUI的。

似乎您需要使用every方法来搜索它。every方法将每秒调用您的代码,或者按您传入的秒数调用代码

应该这样做:

every do
  # your appending code
end

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

似乎需要每个方法搜索它。every方法将每秒调用您的代码,或者按您传入的秒数调用代码

应该这样做:

every do
  # your appending code
end

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

如果您希望列出目录中的所有文件并每秒刷新列表,那么我认为这就是您需要的:

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

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

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

对非常感谢你!由于OP正在编写一个shoes应用程序,所以使用动画方法而不是每种方法更符合逻辑是的!非常感谢你!由于OP正在编写一个shoes应用程序,所以使用动画方法而不是每种方法更符合逻辑。感谢您的输入!谢谢你的意见!