PyQt4:将QTextedit设置为默认的sys.stdout

时间:2015-11-04 16:45:12

标签: python-2.7 command-line pyqt pyqt4 sys

我有2个脚本:

script_1:执行一些计算并在命令行中打印答案。

script_2:import script_1,然后将script_1中的一些函数连接到pyqt4槽。

script_1不包含PyQt4代码 script_2包含任何相关的PyQt4代码

我将代码放在两个脚本中的原因是我可以修改所有"算法"和script_1中的计算,而不必担心脚本_2总是在变化(添加颜色,按钮和其他小部件。)

当我运行script_1时,查看命令行中的所有输出很有用,但是当我运行script_2时,我正在查看一个PyQt gui,它有一个空白的QTextEdit小部件。我希望命令行中出现的所有文本都进入QTextEdit框,但我找不到办法。

有没有简单或任何方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您不需要将输入完全重定向到QTextEdit,只需尝试抓住print并将消息附加到QTextEdit

class Log(object):
    def __init__(self, edit):
        self.out = sys.stdout
        self.textEdit = edit

    def write(self, message):
        self.out.write(message)
        self.textEdit.append(message)

    def flush(self):
        self.out.flush()

    #...

if __name__ == '__main__':

    app = QApplication(sys.argv)
    print("will not be in textedit")
    edit = QTextEdit()
    edit.show()
    sys.stdout = Log(edit)
    print("will be in textedit")