pyqt6创建线程逻辑界面分离
时间: 2023-10-15 09:05:30 浏览: 42
在PyQt6中,可以通过使用QThread类来创建线程,同时使用界面和逻辑分离的方法可以使代码更加清晰易懂。
下面是一个简单的示例:
```python
from PyQt6.QtCore import QThread, pyqtSignal
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
class Worker(QThread):
finished = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
def run(self):
# 在这里执行耗时操作
self.finished.emit()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.button = QPushButton("开始")
self.button.clicked.connect(self.start_work)
self.setCentralWidget(QWidget(self))
self.centralWidget().setLayout(QVBoxLayout())
self.centralWidget().layout().addWidget(self.button)
def start_work(self):
self.button.setEnabled(False)
self.worker = Worker()
self.worker.finished.connect(self.finish_work)
self.worker.start()
def finish_work(self):
self.button.setEnabled(True)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
```
在此示例中,我们创建了一个Worker类作为我们的线程类,并重写了run方法以执行耗时操作。我们还定义了一个finished信号,当线程完成时会发出此信号。
在MainWindow类中,我们创建了一个QPushButton对象,当被点击时,我们创建一个Worker对象并启动它。我们还连接了Worker的finished信号到finish_work方法中,以在线程完成时更新主窗口。
通过这种方式,我们将逻辑和界面分离,从而使代码更加易于维护和扩展。