私はグーグルドしたたくさんの例を扱っていましたが、ここでstackoverflowのスレッディングについての質問を見ましたが、それでもそれを得ることはできません。ここでPython/PyQt/Qt Threading:stdout/stderrをすぐに印刷するにはどうしたらいいですか?
は、私が働いているいくつかのサンプルコードです:
class Debugger(QTextBrowser):
def __init__(self, parent):
super(Debugger, self).__init__(parent)
sys.stdout = self
def write(self, text):
self.moveCursor(QTextCursor.End)
self.textCursor().insertText(text)
基本的に、私は、任意の「印刷」の文またはstdoutstreamへの書き込みの他の形態をキャッチしようとしています。しかし、到着時に1枚ずつプリントすることはできません。代わりに、文字列を印刷するプロセスが終了してから情報のログを開始するまで待機します。だから私はこれを適切にスレッド化するのですか?
編集:コードを最小限に抑えました。
私は確信していませんが、ここで起こっていることは、ストリームが 'flush()'になるまで書かれたものであることです。もし自分のコードが書いているのであれば、ただ待たなければならないクライアントコードなら、ストリームに 'write()'を書くとすぐに 'flush()'を呼び出すようにしてください。 – snim2
それは問題ではありません。私は以下を試した:1) 'self.oldstdout = sys.stdout'を' Debugger .__ init'に追加しました2) 'self.console.oldstdout.write(text)'を 'StdoutStream.write'に追加しました。そして、これが起こった:pythonコンソールは文字列をすぐに表示したが、デバッガQTextBrowserはプロセス全体が終了するまで待った。 – Jeff
可能な複製http://stackoverflow.com/questions/2859256/how-to-redirect-a-python-console-output-to-a-qtextbox – synthesizerpatel