3

私は wxPython/Python でアプリケーションを開発している新しいプログラマーです。次のように、ボタン イベントから一貫性のない結果が得られます。

def OnButton1Button(self, event):

    self.textCtrl9.AppendText(" 1st instance\n")
    time.sleep(5)
    self.textCtrl9.AppendText(" 2nd instance\n")

印刷され1st instance、5 秒後に再び印刷されます2nd instance。これは Windows OS では正常に動作していますが、Linux では、ボタンを押してから 5 秒後に両方を (同時に)取得してい1st instanceます。2nd instance

私は本当に混乱しています。誰か解決策を教えてください。

前もって感謝します。

4

1 に答える 1

1

これは、を使用して実行する必要がありますwx.Timer

主な目標が5秒後にGUIを更新することであると想定して、2番目AppendTextを関数に入れ、wx.Timerで呼び出されるように設定します。このように、GUIは5秒の遅延の間も応答します。

time.sleep()GUIのイベントハンドラー、つまりメインスレッドに 呼び出しを配置し​​ても、頭痛の種は終わりません。

一方、GUIを5秒間応答させないようにする場合は、ウィンドウで使用するなど、明示的にこれを実行し、5秒が経過したらタイマーを使用してEnable(False)呼び出す必要があります。Enable(True)このようにして、GUIが非アクティブであることをユーザーに示します。

于 2012-12-12T05:41:52.210 に答える