小编ima*_*yan的帖子

PyQt5:调用长时间运行的函数时 QMainWindow 冻结

创建一个 QMainWindow >> 按下开始按钮 >> 将长时间运行的函数与 QLabel 作为 arg >> 在运行长函数时更新标签。

我想更新 GUI 中长时间运行的函数的状态。但是一旦长时间运行的功能启动,整个窗口就会冻结

import sys
import time
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (
    QApplication,
    QLabel,
    QMainWindow,
    QPushButton,
    QVBoxLayout,
    QWidget,
)

def runLongTask(label):
    label.setText('<1> sleeping for 10s ...')
    time.sleep(10)
    label.setText('<2> sleeping for 10s ...')
    time.sleep(10)
    label.setText('End')

class Window(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi()

    def setupUi(self):
        self.setWindowTitle("GUI freeze FIX")
        self.resize(350, 250)
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)
        self.label = QLabel()
        self.label.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        self.label.setText('No Update')
        countBtn = QPushButton("Start")
        countBtn.clicked.connect(lambda: runLongTask(self.label))
        layout …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt5

0
推荐指数
1
解决办法
453
查看次数

标签 统计

pyqt ×1

pyqt5 ×1

python ×1