0

進行状況バーの値を確認しています。100 の場合は、完了したアップロードが 2 回印刷されないように終了したいと考えています。プログレス バーを照会すると、なぜ 100 が 2 回表示されるのかわかりません。

def callback(self,*args):
  cmds.progressBar('progbar', edit=True, step=1)
  if cmds.progressBar('progbar',q=True, progress=True)==100:
    print "Finished Uploading."
    break

同様のスレッドを見つけましたが、私の場合のシナリオは少し異なります...

4

1 に答える 1

0

あなたを助けることができるように、コードのサンプルが十分に提供されていません。まず、実際にはこの関数にループがないにもかかわらず、callback() 関数に break ステートメントが含まれています。

いずれにせよ、確認のために次のサンプルを書きましたが、実際には100に達したときに「アップロードが完了しました」と1回だけ出力されます。

import maya.cmds as cmds

cmds.progressBar('progressBar') # initialise the progress bar

def callback():  
  # Begin loop from 0 to 100 - remember range(n) returns numbers from 0 (inclusive) to n (exclusive)
  for i in range(101):
      cmds.progressBar('progressBar', edit=True, step=1) # increase step by 1
      if (cmds.progressBar('progressBar',q=True, progress=True)==100):
          print "Finished Uploading."
          break
          # Theoretically, breaking is simply here so that you stop wasting iterations in some cases,
          # but it's not necessary for the printout, since we have only specified that the print will
          # happen when the progress value is equal to exactly 100.
          # Finally, if there is NO loop (like the code you pasted originally), then you shouldn't have
          # a break.

callback()

この問題の考えられる理由は、プログレス バーの進行状況が 100 ステップを超えていることと、プログレス バーの最大値が 100 であることです。この場合、ステップを増やし続けると、値は 100 のままになります (つまり最大) したがって、100 に等しいかどうかを照会するたびに、True が返されます。

残念ながら、あなたからの具体的な情報がなければ、これ以上具体的なことはお答えできません。

于 2013-01-28T13:14:39.177 に答える