使用pyqt5开启一个线程,每隔1s在界面里的文本框输出31
时间: 2024-02-18 17:59:16 浏览: 102
好的,我可以帮你实现。
首先,我们需要导入PyQt5和Python的`threading`模块。然后,我们创建一个继承自`QThread`的子类,重写其`run()`方法来执行我们想要的操作,即每隔1秒输出31到文本框。
下面是完整的代码示例:
```python
import sys
import threading
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit
from PyQt5.QtCore import QThread, pyqtSignal
class Worker(QThread):
output_signal = pyqtSignal(str)
def run(self):
while True:
self.output_signal.emit('31\n')
self.sleep(1)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.text_edit = QTextEdit()
self.setCentralWidget(self.text_edit)
self.worker = Worker()
self.worker.output_signal.connect(self.text_edit.insertPlainText)
self.worker.start()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个`Worker`类作为线程执行的对象,其中定义了一个`output_signal`信号,每隔1秒会发射这个信号,将字符串`'31\n'`传递给槽函数。
在主窗口类`MainWindow`中,我们创建了一个`QTextEdit`对象作为中央控件,并将`Worker`类的对象实例化,将信号连接到`QTextEdit`对象的`insertPlainText`插槽上,最后启动线程。当线程发射信号时,`QTextEdit`对象的`insertPlainText`插槽会被调用,将字符串`'31\n'`输出到文本框中。
阅读全文