2016-08-25 1 views
0

wxProgressDialogを使用して、ポート間の切り替え時間と測定時間を表示しています。私はこのテストを24時間以上実行しています(データの記録中に何度も同じことを繰り返す)。時間の7時に表示されるTherroです:wxAssertFailure一定期間に渡ってダイアログボックスバーを表示する

トレースバック(最新の呼び出しの最後): ファイル "C:\ Users \ユーザーlocaluserの\デスクトップ\サーマル\ Cheyenne_Antenna_Cal_PDA_Thermal_Test.py" take_measurements_at_interval self.take_measurementで、ライン2117、(自己) ファイル "C:\ Users \ユーザーlocaluserの\デスクトップ\サーマル\ Cheyenne_Antenna_Cal_PDA_Thermal_Test.py" take_measurement self.Measure_Plot(自己) ファイル "C:\ Users \ユーザーlocaluserの\デスクトップ\サーマル\ Cheyenne_Antenna_Cal_PDA_Thermal_Test.py" で、ライン2185を、 、Line 2231、Measure_Plot内 style = wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME) ファイル "C:\ Python27 \ libには\サイト - パッケージ\ WX-2.8-MSW-ユニコードの\ wx_windows.py" のinitで、ライン2951、 .ProgressDialog_swiginit(自己、 wxControl :: MSWCreateControl():CreateWindowEx(...)で、C++アサーション "wxAssertFailure"が.... \ src \ msw \ control.cpp(159)で失敗しました。 "静的"、フラグ= 52000100、EX = 00000000)ここで

#Giving Time for switch to toggle next port 
     progressMax = 5 
     dialog = wx.ProgressDialog("A progress box", "Time to switch", progressMax, 
            style=wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME) 
     keepGoing = True 
     count = 0 
     while keepGoing and count < progressMax: 
      count = count + 1 
      wx.Sleep(1) 
      keepGoing = dialog.Update(count) 

     dialog.Destroy() 
'遅延時間' に使用されているコードである

に失敗しました

コードが5秒間停止すると、データが記録される前にスイッチハードウェアとPNAが安定します。このすべては、一定期間Forループで起こっています。誰かがより多くの情報を必要とするなら、私は証明することができます。

+0

プラットフォーム/ツールキット/ OSのどちらのバージョンですか?どのwxバージョンですか? C++サンプルでそれを再現できますか? – Igor

+0

これはPython 2.7、Windows 7で、これをC++で再現しようとします。 –

答えて

0

長時間実行した後でウィンドウの作成が失敗した場合、Microsoft Windowsでは依然として非常に限られたリソースであるウィンドウが不足する可能性があります(正確な制限はWindowsのバージョンによって異なりますが、 16,384として)。

これは、トップレベルのウィンドウが戻ってくると本当に破壊される(隠されているだけではない)ため、今度はメインイベントループに戻ってこない場合に起こります。

+0

OK、 'for'ループを使用するのではなく、 'itertools.repeat(object [、times])'を調べていますが、私が読んでいることは、 'times' 。あれは正しいですか?? –

+0

申し訳ありませんが、これを再調整してください、あなたは何を言っているのか分かりません。 –

関連する問題