質問

同じスレッドからwxPostEvent / wxCallAfterを使用して複数のイベントがポストされた場合ボタンをクリックすると、同じ順序で処理されることになっていますか?

以下の例では、イベントをポストするためにwx.Callafterが使用され、最終的にコールバック関数が呼び出され、wx.CallAfterに渡されたのと同じ順序で呼び出されます

def onbutton(self, event):
    wx.CallAfter(func1)
    # some more code
    wx.CallAfter(func2)
役に立ちましたか?

解決

CallAfterはイベントをイベントキューにポストします。これらは順番に処理する必要があります。それでも、それらは関数の完了に基づくのではなく、アイドルイベントで処理されるため、アイドルイベントのタイミングに応じてfunc1が完了する前にfunc2を処理できます(wx.Yieldなど)。これに関する問題についての議論があります。 こちらで、ソートできるようですトリッキー。

他のヒント

保証されるべきだと思います。スレッド内のシリアルポートからデータを取得し、wxが処理するイベントを発生させるコードがあります。 115kbpsでデータを受信する場合(処理される前にいくつかのイベントを確実に発火させる場合)でも、wxがハンドラーを呼び出してデータを印刷/ログアウトすると、データが順番に表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top