我在Python中有这个有点复杂的命令行函数(让我们调用它myFunction()),我正在努力将它集成到图形界面中(使用PySide/Qt).
GUI用于帮助选择输入和显示输出.但是,它myFunction被设计为一个独立的命令行功能,它偶尔会打印出进度.
我的问题是:如何拦截这些print调用并在GUI中显示它们?我知道可以修改myFunction()发送processEvents()到GUI,但我会失去myFunction()在终端中执行的能力.
理想情况下,我想要类似于Ubuntu的图形软件更新程序,它有一个小的嵌入式终端外观小部件,显示apt-get它在终端中执行的显示内容.
你可以重定向stdout并在之后恢复.例如:
import StringIO
import sys
# somewhere to store output
out = StringIO.StringIO()
# set stdout to our StringIO instance
sys.stdout = out
# print something (nothing will print)
print 'herp derp'
# restore stdout so we can really print (__stdout__ stores the original stdout)
sys.stdout = sys.__stdout__
# print the stored value from previous print
print out.getvalue()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2159 次 |
| 最近记录: |