pyqt 将print输出在textbrowser
时间: 2023-12-27 08:02:28 浏览: 129
详解PyQt5中textBrowser显示print语句输出的简单方法
5星 · 资源好评率100%
您可以使用以下代码将 `print` 输出到 `QTextBrowser` 中:
```python
import sys
from PyQt5.QtWidgets import QApplication, QTextBrowser
class Stream(QObject):
"""将print输出重定向到QTextBrowser的流"""
newText = pyqtSignal(str)
def write(self, text):
self.newText.emit(str(text))
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.textBrowser = QTextBrowser(self)
self.setCentralWidget(self.textBrowser)
sys.stdout = Stream(newText=self.onUpdateText)
@pyqtSlot(str)
def onUpdateText(self, text):
"""将文本添加到QTextBrowser"""
cursor = self.textBrowser.textCursor()
cursor.movePosition(QTextCursor.End)
cursor.insertText(text)
self.textBrowser.setTextCursor(cursor)
self.textBrowser.ensureCursorVisible()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个代码定义了一个 `Stream` 类,这个类重写了 `write()` 方法并且使用 `pyqtSignal` 将输出文本发送到 `MainWindow` 类的 `onUpdateText` 槽函数。在 `MainWindow` 类中,我们将 `sys.stdout` 重定向到 `Stream` 类的实例上,这样所有的 `print` 输出都会被发送到 `onUpdateText` 槽函数中,然后将文本添加到 `QTextBrowser` 中。
阅读全文