2010-12-09 17 views

cevap

1

Eğer GUIKit kullanmaya başlamadan önce

Needs["GUIKit`"]; 

yürütmek unutmadık değil mi bu şekilde ref elde? Eğer komutlarınız çalışmaz ise, bilinmedikleri için. GUIKit'i kullanmaya başladıktan sonra yüklerseniz, bazı sembollerinin yanlışlıkla tanımladığınız semboller tarafından gölgelenebileceğini unutmayın.

+0

Teşekkürler, zaten yaptım. – pAkY88

9
Mathematica 6 ile

veya sonrası yaşlı GUIKit paketinin yerine Monitör ve ProgressIndicator kullanmayı deneyin:

With[{count = 1000}, 
Monitor[Do[Pause[0.01];, {i, count}], 
    ProgressIndicator[Dynamic[i/count]]]] 
+0

Sorun şu ki, hesaplamadaki ilerleme göstergesini güncelleyebildiğim ve hesaplama süresini tahmin edemediğimden, örneğin bazı olaylar olduğunda, durum göstergesi durumunu dinamik olarak güncellerdim. Bunu nasıl yapabilirim? – pAkY88

+0

İzleme sorunuzu tamamen anladığımdan emin değilim. Dinamik içerisindeki i/count ifadesi, her değişiklik olduğunda veya değiştiğinde yeniden değerlendirilir. Dolayısıyla, hesaplama sırasında değerini güncelleyebildiğinizden beri sayımın ne zaman olduğunu bilmek zorunda değilsiniz. Ayrıca, Monitor için ikinci argüman bir ProgressIndicator olmak zorunda değildir. Kullanacağınız maksimum değeri bilmiyorsanız, ancak yine de değerlendirmeyi izlemek istiyorsanız Dinamik [i] gibi bir şey kullanabilirsiniz ve mevcut değeri görüntülenecek ve güncellenecektir. – ragfield

6

Bu @ ragfield cevabı sadece bir uzantısıdır. Eğer sınırlı ve sınırsız büyüklükleri temsil etmek istiyorsanız

, bu satırlar boyunca bir şey yapmak colud:

Clear["Global`*"]; 
count = 0; inRange = 0; i = 0; sumTgt = 10^5 
Monitor[ 
    While[count < sumTgt, 
    If[.14 < (rand = RandomReal[]) < .15, inRange++]; 
    count += rand; 
    ] 
    , {{"SumTillNow", ProgressIndicator[count, {0, sumTgt} ],count}, 
    {"InRange", ProgressIndicator[inRange, Indeterminate],inRange}} 
    // MatrixForm 
]; 

Eğer presententations için animasyonlu gif ve bu şekilde ilerleme göstergelerini kaydetmek istiyorsanız, değiştirebilir biraz:

count = 0; inRange = 0; i = 0; sumTgt = 10^4 
Monitor[ 
    While[count < sumTgt, 
    If[.14 < (rand = RandomReal[]) < .15, inRange++]; 
    count += rand; 
    ] 
    , a[++i] = Grid[ 
       {{"SumTillNow", ProgressIndicator[count, {0, sumTgt}],count},  
        {"InRange", ProgressIndicator[inRange, Indeterminate],inRange + 0.}}, 
       Frame -> All, Alignment -> {{Left, Center, Right}}, 
       ItemSize -> {{Automatic, Automatic, 8}}]; 
]; 
Export["c:\Anim.gif", Table[a[j]//MatrixForm, {j, i}],"DisplayDurations"->{.3}] 

ve sonucudur:

alt text

İlgili konular