pyqt5 将print显示到textbrowser上
时间: 2023-08-08 17:02:28 浏览: 586
在PyQt5中,我们可以通过将print语句的输出重定向到QTextBrowser组件来将打印内容显示在TextBrowser上。
首先,我们需要创建一个QTextBrowser组件,并将其添加到主窗口中。可以使用如下代码:
```python
textbrowser = QtWidgets.QTextBrowser(self)
self.setCentralWidget(textbrowser)
```
接下来,我们需要将print语句的输出重定向到QTextBrowser组件。可以使用如下代码:
```python
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QTextCursor
class PrintRedirect(QtCore.QObject):
newText = QtCore.pyqtSignal(str)
def write(self, text):
self.newText.emit(str(text))
sys.stdout = PrintRedirect()
```
最后,我们需要将QTextBrowser组件的setTextCursor方法与新的输出信号连接起来。这样,每当有新的打印输出时,就会更新QTextBrowser中的文本。
```python
textbrowser.newText.connect(textbrowser.append)
```
现在,每次使用print语句时,输出都会自动显示在QTextBrowser组件上。
以下是一个完整的例子:
```python
from PyQt5 import QtWidgets, QtCore
class MainWidget(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
textbrowser = QtWidgets.QTextBrowser(self)
self.setCentralWidget(textbrowser)
sys.stdout = PrintRedirect()
textbrowser.newText.connect(textbrowser.append)
class PrintRedirect(QtCore.QObject):
newText = QtCore.pyqtSignal(str)
def write(self, text):
self.newText.emit(str(text))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MainWidget()
window.show()
sys.exit(app.exec_())
```
这样,当你运行python程序时,print语句的输出就会显示在QTextBrowser组件上。
阅读全文