可能ですが、同一プロセス内なのか外部プロセスなのかで方法が異なります。
python
1
2import sys
3
4
5def output(text):
6 # TODO: ここで、UI に出力。
7 # 注意: print() した内容がこの関数に渡されるので、この関数内でprint()は使えない。
8 ...
9
10sys.stderr.write = output
11sys.stdout.write = output
同一プロセス内の出力をリダイレクトする場合、よくある手法はこのような感じですが、
状況次第では、別の方法で実装した方が適切な場合もあります。
- 端末とGUI両方同時に出力したい場合等は、loggingモジュールの併用を推奨。
- リダイレクトしたい場所が局所的な場合は、contextlib.redirect_stdout、等。
参考: 標準モジュール内で出力先のリダイレクトに使えそうなもの
- sys.stdout.write, contextlib.redirect_stdout 標準出力先をリダイレクト
- sys.displayhook 対話セッションの場合
- subprocess / asyncio.subprocess 外部プロセスの場合
- builtins.print 組み込みのprint関数を差し替える
- logging ログの出力先を柔軟に構成する仕組みを提供
検索のヒント「標準出力」「標準エラー」「リダイレクト」