Ok, ich bin mir in Shoes nicht wirklich sicher über viele Dinge, aber mein Trial-and-Error-Ansatz hat mich bisher auf diesem Weg enttäuscht.Wie kann ich den Fortschrittsbalken in Shoes verwenden?
Ich habe eine Klasse, die eine Art von Berechnung ausführt, die eine Weile dauert, und ich möchte einen Fortschrittsbalken für den Benutzer werfen, um zu betrachten, während es beendet wird. Meine rechenintensive Methode liefert seinen Prozent abgeschlossen, wenn ein Block übergeben:
class MathyStuff
def initialize()
end
## Some expensive, time consuming method which yields it's percent complete
def expensiveMethod(&block)
0.upto(100) do |i|
0.upto(100000) do |j|
k = j;
end
yield i.to_f/100;
end
end
end
Hier ist, was ich wie würde in Schuhe sagen:
require 'MathyStuff.rb'
Shoes.app do
@myMathyStuff = MathyStuff.new();
button("Do expensive mathy thing...") do
window() do
@progress = progress();
@myMathyStuff.expensiveMethod() {|percent| @progress.fraction = percent;}
end
end
end
Aber es scheint nicht zu funktionieren. Ich habe versucht mit/ohne den Fensteranruf, ich habe animate() auf verschiedene Arten versucht, ich habe sogar versucht, Thread.new aufzurufen und ihm den Fensterblock zu übergeben, indem er über Shoes.APPS() [0] .get/setPercent-Methoden; nichts scheint richtig zu funktionieren.
Vielleicht verwende ich den Fortschrittsbalken nicht so, wie er verwendet werden soll. Andererseits, wofür wäre sonst noch ein Fortschrittsbalken? ;-)
Danke, das hat sehr geholfen. Es scheint, dass GUI-Programmierung, selbst in Shoes, eine andere Art des Denkens erfordert. Ich bin bald wieder mit mehr Fragen zurück, da bin ich mir sicher! – shawn