2010-12-09 3 views

답변

1

당신이 GUIKit를 사용하기 시작하기 전에

Needs["GUIKit`"]; 

을 실행하기 위해 기억나요 이런 식으로 심판을 얻을? 그렇지 않으면 명령이 실행되지 않습니다. 왜냐하면 명령이 알려지지 않았기 때문입니다. GUIKit을 사용하기 시작한 후에 GUIKit을로드하는 경우 의도하지 않게 정의한 기호로 인해 일부 기호가 음영 처리 될 수 있음을 잊지 마십시오.

+0

감사합니다. 이미했습니다. – pAkY88

9
티카 6

이상은 이전 GUIKit 패키지 대신 모니터 및 ProgressIndicator를 사용해보십시오 :

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

문제는 계산에서 진행률 표시기를 업데이트한다는 것이고 계산 시간을 예측할 수 없기 때문에 진행률 표시기 상태를 동적으로 업데이트 할 것입니다 (예 : 일부 이벤트가 발생하는 경우). 어떻게하면됩니까? – pAkY88

+0

후속 질문을 완전히 이해하고 있는지 잘 모르겠습니다. Dynamic 내의 i/count 표현식은 i 또는 count가 변경 될 때마다 재평가됩니다. 따라서 계산 중 값을 업데이트 할 수 있기 때문에 어떤 계산이 필요한지 미리 알 필요가 없습니다. 또한 Monitor의 두 번째 인수는 ProgressIndicator 일 필요는 없습니다. 사용하는 최대 값을 모르지만 평가를 계속 모니터하려면 Dynamic [i]와 같은 것을 사용할 수 있으며 i의 현재 값이 표시되고 업데이트됩니다. – ragfield

6

이 @ ragfield의 대답 단지 확장입니다. 당신이 경계하고 무제한의 크기를 표현하려면

, 당신은이 라인을 따라 뭔가를 할 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 
]; 

당신이 presententations을위한 애니메이션 GIF와 같은 진행 표시기를 저장하려면, 당신은 수정할 수 그것은 비트 :

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}] 

및 결과는 다음

alt text

,617,
관련 문제