pyqt5实时显示输出
时间: 2023-06-29 21:18:19 浏览: 82
可以使用 QTextEdit 来实现实时显示输出。下面是一个简单的例子:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextEdit, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal
class WorkerThread(QThread):
output_signal = pyqtSignal(str)
def __init__(self):
super().__init__()
def run(self):
for i in range(10):
output = f'Output {i}\n'
self.output_signal.emit(output)
self.sleep(1)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.output_text_edit = QTextEdit(self)
self.output_text_edit.setReadOnly(True)
self.start_button = QPushButton('Start', self)
self.start_button.clicked.connect(self.start_worker_thread)
layout = QVBoxLayout(self)
layout.addWidget(self.output_text_edit)
layout.addWidget(self.start_button)
def start_worker_thread(self):
self.start_button.setEnabled(False)
self.worker_thread = WorkerThread()
self.worker_thread.output_signal.connect(self.append_output_text)
self.worker_thread.finished.connect(self.worker_thread_finished)
self.worker_thread.start()
def append_output_text(self, text):
self.output_text_edit.moveCursor(self.output_text_edit.End)
self.output_text_edit.insertPlainText(text)
def worker_thread_finished(self):
self.start_button.setEnabled(True)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
```
这个例子中,我们使用了两个线程:主线程和工作线程。工作线程每隔一秒钟输出一条消息,然后通过 `output_signal` 信号将消息发送给主线程。主线程收到消息后调用 `append_output_text()` 方法将消息追加到 QTextEdit 控件中,实现实时显示输出。