pyqt5 5.15版本开启一个子进程并设置主界面不可操作
时间: 2023-07-16 22:16:02 浏览: 49
可以使用Python标准库中的`multiprocessing`模块来启动一个子进程,同时使用PyQt5的`QApplication.setDisabled()`方法来设置主界面不可操作。
下面是一个简单的示例代码:
```python
import sys
import multiprocessing
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Main Window')
self.setGeometry(100, 100, 300, 200)
button = QPushButton('Start Process', self)
button.move(100, 80)
button.clicked.connect(self.startProcess)
def startProcess(self):
# 禁用主界面
self.setDisabled(True)
# 启动子进程
p = multiprocessing.Process(target=self.subProcess)
p.start()
def subProcess(self):
# 子进程工作代码
print('Sub process started')
# 这里可以执行一些耗时的操作
# 启用主界面
self.setEnabled(True)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
```
在上面的代码中,`startProcess()`方法被点击按钮触发,首先调用`setDisabled(True)`方法禁用主界面,然后启动一个子进程并调用`subProcess()`方法,在这个方法中可以执行一些需要花费时间的操作。当子进程完成工作后,调用`setEnabled(True)`方法启用主界面。