我正在尝试加载一些需要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)