pyqt5 qthread
时间: 2024-01-03 10:23:09 浏览: 99
PyQt5Thread.py
以下是一个使用PyQt5的QThread类的示例,用于在文本框中每秒打印一个数字:
```python
import sys
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi
class WorkerThread(QThread):
countChanged = pyqtSignal(int)
def run(self):
count = 0
while True:
self.countChanged.emit(count)
count += 1
self.sleep(1)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
loadUi("QThread_Example_UI.ui", self)
self.workerThread = WorkerThread()
self.workerThread.countChanged.connect(self.updateCount)
self.workerThread.start()
def updateCount(self, count):
self.textEdit.append(str(count))
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
```
这个示例中,我们创建了一个继承自QThread的WorkerThread类,其中定义了一个countChanged信号和一个run方法。在run方法中,我们使用一个无限循环来不断增加计数器count,并通过countChanged信号将其发送给主窗口。
主窗口类MainWindow继承自QMainWindow,并使用loadUi方法加载了一个UI文件。在初始化方法中,我们创建了一个WorkerThread实例,并将其countChanged信号连接到了updateCount方法。然后,我们启动了workerThread线程。
updateCount方法用于更新文本框中的数字,每当countChanged信号被触发时,它会将count的值附加到文本框中。
请注意,为了运行这个示例,你需要将UI文件QThread_Example_UI.ui和Python脚本放在同一个目录下,并将UI文件转换为Python代码。你可以使用以下命令将UI文件转换为Python代码:
```shell
pyuic5 QThread_Example_UI.ui -o QThread_Example_UI.py
```
阅读全文