注册 登录
编程论坛 Python论坛

关于控制台定向输出到GUI时文字颜色字体的控制问题(大致说个方向就行)

蓝书 发布于 2020-05-02 16:12, 1388 次点击
我将控制台结果定向输出到UI界面,文字颜色字体怎么也改不了,请高手指点下。
以下代码源自互联网,用来方便交流用:我想把 输出结果:running hello done 字号变大,换个颜色
程序代码:

import sys
import time
from PyQt5.QtCore import QObject, pyqtSignal, QEventLoop, QTimer
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QTextEdit
from PyQt5.QtGui import QTextCursor

 
'''
控制台输出定向到Qtextedit中
'''

 

 
class Stream(QObject):
    """Redirects console output to text widget."""
    newText = pyqtSignal(str)

 
    def write(self, text):
        self.newText.emit(str(text))

 

 
class GenMast(QMainWindow):
    """Main application window."""
    def __init__(self):
        super().__init__()

 
        self.initUI()

 
        # Custom output stream.
        sys.stdout = Stream(newText=self.onUpdateText)

 
    def onUpdateText(self, text):
        """Write console output to text widget."""
        cursor = self.process.textCursor()
        cursor.movePosition(QTextCursor.End)
        cursor.insertText(text)
        self.process.setTextCursor(cursor)
        self.process.ensureCursorVisible()

 
    def closeEvent(self, event):
        """Shuts down application on close."""
        # Return stdout to defaults.
        sys.stdout = sys.__stdout__
        super().closeEvent(event)

 
    def initUI(self):
        """Creates UI window on launch."""
        # Button for generating the master list.
        btnGenMast = QPushButton('Run', self)
        btnGenMast.move(450, 50)
        btnGenMast.resize(100, 200)
        btnGenMast.clicked.connect(self.genMastClicked)

 
        # Create the text output widget.
        self.process = QTextEdit(self, readOnly=True)
        self.process.ensureCursorVisible()
        self.process.setLineWrapColumnOrWidth(500)
        self.process.setLineWrapMode(QTextEdit.FixedPixelWidth)
        self.process.setFixedWidth(400)
        self.process.setFixedHeight(200)
        self.process.move(30, 50)

 
        # Set window size and title, then show the window.
        self.setGeometry(300, 300, 600, 300)
        self.setWindowTitle('Generate Master')
        self.show()

 
    def printhello(self):
        print('hello')

 
    def genMastClicked(self):
        """Runs the main function."""
        print('Running...')
        self.printhello()
        loop = QEventLoop()
        QTimer.singleShot(2000, loop.quit)
        loop.exec_()
        print('Done.')

 

 
if __name__ == '__main__':
    # Run the application.
    app = QApplication(sys.argv)
    app.aboutToQuit.connect(app.deleteLater)
    gui = GenMast()
    sys.exit(app.exec_())
1 回复
#2
蓝书2020-05-02 17:05
抱歉,是我用QT时对输出框做过限定导致无法更改。
1