2015-11-04 67 views
0

我有2個腳本:PyQt4的:設置的QTextEdit作爲默認的sys.stdout來

script_1:執行一些計算,並打印在命令行的答案。

script_2:導入script_1,然後將script_1中的一些函數連接到pyqt4插槽。

script_1不包含PyQt4的代碼 script_2包含任何有關PyQt4的代碼

的原因,我有我的兩個腳本代碼,這樣我可以修改所有的「算法」和計算script_1並無需擔心script_2哪些總是在改變(添加顏色,按鈕和其他小部件)。

當我運行script_1時,查看命令行中的所有輸出是有用的,但是當我運行script_2時,我正在查看PyQt gui其中有一個空白的QTextEdit小部件。我希望命令行中出現的所有文本都進入QTextEdit框,但我找不到這樣做的方法。

有沒有簡單或任何方式來實現這一目標?

回答

0

你並不需要輸入完全重定向到QTextEdit,只是試圖抓住print ING和附加消息給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")