使用QTextEdit控件来显示print输出的数据在不同的控件
时间: 2024-04-04 09:31:05 浏览: 206
py代码-PyQt5多行文本框控件QTextEdit简介
可以通过定义一个自定义的Stream类来实现将print输出的数据显示在多个QTextEdit控件中。下面是一个示例代码:
```python
import sys
from PyQt5.QtCore import Qt, QTextStream
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextEdit, QPushButton
class MultiStream(object):
def __init__(self, streams):
self.streams = streams
def write(self, data):
for stream in self.streams:
stream.write(data)
def flush(self):
for stream in self.streams:
stream.flush()
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Print Output Demo')
# 创建两个QTextEdit控件用于显示print输出的结果
self.text_edit1 = QTextEdit(self)
self.text_edit1.setReadOnly(True)
self.text_edit2 = QTextEdit(self)
self.text_edit2.setReadOnly(True)
# 创建一个按钮用于触发print输出
self.button_print = QPushButton('Print', self)
self.button_print.clicked.connect(self.print_output)
# 创建一个垂直布局,并将QTextEdit和QPushButton添加进去
vbox = QVBoxLayout(self)
vbox.addWidget(self.text_edit1)
vbox.addWidget(self.text_edit2)
vbox.addWidget(self.button_print)
self.setLayout(vbox)
def print_output(self):
# 将两个QTextEdit控件的文本流保存到列表中
streams = [QTextStream(self.text_edit1.document()), QTextStream(self.text_edit2.document())]
# 创建自定义的Stream对象
multi_stream = MultiStream(streams)
# 重定向标准输出到自定义的Stream对象
sys.stdout = multi_stream
# 执行print语句,输出结果将会显示在两个QTextEdit控件中
print('Hello World!')
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
```
运行上述代码后,点击按钮即可在两个QTextEdit控件中显示print输出的结果。你可以根据需要将多个QTextEdit控件添加到窗口中,分别显示不同的输出结果。注意,这里的关键是将QTextEdit的文本流保存到列表中,并在自定义的Stream类中遍历列表,将数据写入到多个文本流中。
阅读全文