小编Mr *_* RC的帖子

PyQt5线程GUI不起作用

我正在尝试加载一些需要30秒钟以上的数据。在这段时间内,我希望用户看到一个小的GUI,上面写着“正在加载。”,然后是“正在加载...”,然后是“正在加载...”,然后是“正在加载”。等。我已经读了一些书,我想我必须把它放在一个单独的线程中。我发现有人遇到类似问题,暗示解决方案在正确的位置:

t = threading.Thread(target=self.test)
t.daemon = True
t.start()
Run Code Online (Sandbox Code Playgroud)

在文件的下部,我具有测试功能

def test(self):
    tmp = InfoMessage()

    while True:
        print(1)
Run Code Online (Sandbox Code Playgroud)

和InfoMessage函数

from PyQt5 import uic, QtCore, QtGui, QtWidgets
import sys

class InfoMessage(QtWidgets.QDialog):
    def __init__(self, msg='Loading ', parent=None):
        try:
            super(InfoMessage, self).__init__(parent)
            uic.loadUi('ui files/InfoMessage.ui',self)

            self.setWindowTitle(' ')

            self.o_msg = msg
            self.msg = msg
            self.info_label.setText(msg)
            self.val = 0

            self.timer = QtCore.QTimer()
            self.timer.setInterval(500)
            self.timer.timeout.connect(self.update_message)
            self.timer.start()

            self.show()
        except BaseException as e:
            print(str(e))

    def update_message(self):
        self.val += 1
        self.msg += '.'

        if self.val < 20:
            self.info_label.setText(self.msg)
        else:
            self.val = 0 …
Run Code Online (Sandbox Code Playgroud)

python multithreading pyqt python-3.x pyqt5

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

标签 统计

multithreading ×1

pyqt ×1

pyqt5 ×1

python ×1

python-3.x ×1