我无法弄清楚 ruby/tk 中的进度条如何在不确定模式下工作。
我可以显示进度条,但它不会移动。
一个例子,如果我只是在我的代码中使用这一行
progressBar.start
如果我只有那条线,进度条将按应有的方式显示和移动。
但是如果我在它下面添加一行代码,它就不会执行。我的印象是进度条的 .start 方法会启动它,而方法 stop 会停止它,并且在您之间有应该执行的代码和进度条显示直到它看到停止。
但如果我这样做
progressBar.start
# some code (a loop that takes a long while to execute)
progressBar.stop
直到中间的代码完成,进度条才会显示?我以为这就是你想要进度条的原因?
我在这里不明白什么。
谢谢你的帮助,但为什么这不起作用。这只是一个愚蠢的测试。但我在实际程序中做类似的事情。如果我编写此代码,进度条将不会按应有的方式运行,而是在 Devil img 循环完成后运行?
Dir.chdir("c:/temp")
bilder = Dir.glob("*.jpg")+
bilder = Dir.glob("*.png")+
bilder = Dir.glob("*.gif")
puts bilder
root = TkRoot.new { title 'Progressbar Demo' }
content = Tk::Frame.new(root) {}.grid(:sticky =>'new')
progress = Tk::Tile::Progressbar.new(content:mode=>'indeterminate':orient=>:horizontal)
progress.pack
Thread.new do
progress.start
i=0
while i < bilder.length
Devil.with_image(bilder[i]) do |img|
img.thumbnail2(150)
img.save("thumbnail_"+ bilder[i])
end
i=i+1
end
progress.stop
end
Tk.mainloop