Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在窗口完全加载之前显示加载屏幕?_Python_Python 3.x_Pyqt_Pyqt5 - Fatal编程技术网

Python 如何在窗口完全加载之前显示加载屏幕?

Python 如何在窗口完全加载之前显示加载屏幕?,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,因此,我的应用程序有一个窗口似乎打开缓慢,因为它必须加载大约400个PNG。我想在完全加载之前显示加载屏幕。 窗口代码如下所示: from PyQt5 import QtCore, QtGui, QtWidgets import sys class Ui_Form3(object): def setupUi(self, Form3): #design choices self.scrollArea = QtWidgets.QScrollArea(self.fram

因此,我的应用程序有一个窗口似乎打开缓慢,因为它必须加载大约400个PNG。我想在完全加载之前显示加载屏幕。 窗口代码如下所示:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys


class Ui_Form3(object):
    def setupUi(self, Form3):

    #design choices

    self.scrollArea = QtWidgets.QScrollArea(self.frame) #a scroll area that contains 400 buttons
    self.scrollArea.setWidgetResizable(True)
    self.scrollArea.setObjectName("scrollArea")
    self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
    self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 639, 40712))
    self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
    self.verticalLayout = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_2)
    self.verticalLayout.setObjectName("verticalLayout")
    for i in range(400):  #this part generates all the buttons
        iplusone = i + 1
        bttnstring = "pushButton_" + str(iplusone)
        self.pushButton = QtWidgets.QPushButton(self.scrollAreaWidgetContents_2)
        self.pushButton.setText('sometext')
        self.pushButton.setObjectName(bttnstring)
        self.verticalLayout.addWidget(self.pushButton)
    
    #more design choices

    def retranslateUi(self, Form3):
    _translate = QtCore.QCoreApplication.translate
    Form3.setWindowTitle(_translate("Form3", "App"))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    Form3 = QtWidgets.QWidget()
    ui = Ui_Form3()
    ui.setupUi(Form3)
    Form3.show()
    sys.exit(app.exec_())
我是否可以制作一个加载屏幕,当该窗口应该打开时,该屏幕将打开并保持活动状态,直到变量I达到值400?如果没有,我还能做什么?

是的,你可以

如果名称=“\uuuuu main\uuuuuuuu”:
app=qtwidts.QApplication(sys.argv)
#加载小部件
app.load=LoadingWidget()
app.load.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.FramelessWindowHint)#使其始终处于活动状态
app.loading.show()
Form3=qtwidts.QWidget()
ui=ui_Form3()
ui.setupUi(表格3)
表格3.show()
sys.exit(app.exec_())
然后,在加载图像的函数中添加:

load=QtWidgets.QApplication.instance().loading
正在加载。隐藏()
奖金。某种加载小部件:

类加载窗口(QWidget):
定义初始化(自身,父级):
super()。\uuuu init\uuuu(父级)
main_layout=qtwidts.QHBoxLayout()
self.text=QLabel(“正在加载,请稍候”)
self.text.setStyleSheet(“QLabel{color:white;}”)
main_layout.addWidget(self.text)
self.setStyleSheet(“背景色:#595e”)
self.setLayout(主布局)
def显示(自我):
#您可以重写此方法以将小部件置于中心等。。
super().show()