誰かがこれがどのような状況で失敗するか教えてもらえますか?
self.next_button.Enable( self.__next_enabled )
assert( self.next_button.Enabled == self.__next_enabled )
私はそれがタイプの問題ではないことを知っています-print self.next_button
与え<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x90ea9c0>
ます。挿入self.next_button.Refresh()
しても役に立ちません。もしませんwx.Yield()
。ボタンがフリーズしているかどうかも確認しましたが(念のため)、フリーズしていません。
WxPythonのバージョンはWindows7では2.9.4.0です。UbuntuやMacではこの問題は発生していないようです。
実際、これよりも少し奇妙wx.ProgressBar
です。別の関数呼び出しでを開くと、ボタンが魔法のように無効になっているようです。ここでのコードは、その回避策としてボタンを再度有効にしようとしています。繰り返しますが、UbuntuとMacの同じコードでボタンが無効になることはありません。
アップデート
私はこのように問題を回避する方法をハックしました:
def reset_button_states( self ):
self.next_button.Enable( self.__next_enabled )
if self.next_button.Enabled != self.__next_enabled:
from threading import Timer
Timer( 0.1, self.reset_button_states ).start()
なぜこれが機能しないのか正確にはわかりwx.Yield
ませんが、とりあえず取り上げます。Enable
なぜ通話が無音で失敗するのか、そもそもなぜボタンが非常に強く無効になるのかを知りたいのです。