0

私はpythonとwxPythonを使用してプログラムを開発しています。リストボックスがあり、ログとして使用するためにライブで更新する必要があります。

これは単にAppend()関数を使用して行いましたが、リストボックスに追加されたテキストは、Appendコマンドの実行時に表示されるのではなく、プロシージャの最後まで表示されません。挿入するたびにリストボックスのサイズを印刷するので、これを知っています。

def writeLog(self, text):
    self.log.Append(text)
    print self.log.GetStrings().__len__()

現在、確認のために、次のコードを持つスクリプトを呼び出しています。

parent.writeLog("aaaaaa")
sleep(1)
parent.writeLog("aaaaaa")
sleep(1)
parent.writeLog("aaaaaa")

私はこれらの答えを試しましたが、私のためにそれらを機能させることができませんでした: wxPythonでリストボックスを更新し ますwxPython:wx.ListBoxリストを更新します

では、writeLog関数が呼び出された直後に画面で更新されたlistBoxを確認するにはどうすればよいですか?出来ますか?ありがとう!

4

1 に答える 1

1

ここにはいくつかのオプションがあります。おそらく最も簡単なのはwx.Yield()、UIを更新するときに呼び出すことです。したがって、Append呼び出し後に

別の解決策は、別のスレッドに追加する必要のあるテキストを取得し、それをカスタムイベントまたはpubsubを介してメインスレッドに送り返しAppend、リストボックスに送信することです。

于 2012-09-18T14:33:39.967 に答える