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

大流士

所以我的应用程序窗口似乎打开很慢,因为它必须在其中加载大约 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 时会打开吗?如果没有,我还能做什么?

斯蒂尔疯子

是的你可以。

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)

    # loading widget
    app.loading = LoadingWidget()
    app.loading.setWindowFlags(QtCore.Qt.SplashScreen | QtCore.Qt.FramelessWindowHint)  # make it always active
    app.loading.show()

    Form3 = QtWidgets.QWidget()
    ui = Ui_Form3()
    ui.setupUi(Form3)
    Form3.show()
    sys.exit(app.exec_())

然后,在加载图像的函数中的某个地方,添加:

loading = QtWidgets.QApplication.instance().loading
loading.hide()

奖金某种加载小部件:

class LoadingWindow(QWidget):
    def __init__(self, parent):
        super().__init__(parent)

        main_layout = QtWidgets.QHBoxLayout()
        self.text = QLabel("Loading, please wait")
        self.text.setStyleSheet("QLabel { color: white; }")

        main_layout.addWidget(self.text)

        self.setStyleSheet("background-color: #59595e")
        self.setLayout(main_layout)

    def show(self):
        # you can override this method to put your widget at center etc..
        super().show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在窗口加载之前显示加载图像,直到DomContentLoaded

完全加载后显示窗口

如何在偏好设置之前显示加载屏幕类[Libgdx和android]

如何防止菜单在完全加载之前显示?

如何在加载组件之前设置隐藏窗口属性?

动态创建PDF之前显示加载屏幕

如何在窗口调整大小时为等高的孩子重新加载 div

如何在窗口调整大小上删除/重新加载机车滚动?

如何在窗口中加载 Kendo Grid 并为参数值使用隐藏字段

Visual Studio加载项:如何在窗口中获取选定的项目

如何使vuefire显示加载屏幕?

在幻灯片完全加载之前显示加载器

Vaadin 8:如何在导航到其他具有长加载时间的视图之前显示 ProgressBar 窗口

加载Jqgrid之前和加载网格后如何在屏幕上使用方法?

如何在返回 NetworkImage 之前显示加载指示器?

如何在Post方法填充div之前显示加载图像

如何在显示 Angular 网站之前加载图像

如何在 Android 中显示之前预加载片段

如果未设置 php 会话变量,如何在窗口加载时打开 bootstrap4 弹出窗口?

如何在Ionic的页面加载中显示弹出窗口?

如何在加载 json 数据或对象时显示加载屏幕然后开始新活动?

如何在React中加载组件之前显示加载微调器

如何在使用 ajax 将 PHP 文件加载到 DIV 之前显示加载器?

如何在预加载时显示带有加载指示器的新窗口?

在使用StreamBuilder从Firebase加载数据之前,Flutter会显示红色错误屏幕,该如何解决?

如何在窗体控件(dockPanels)上重新加载焦点

Python - 如何在窗口中显示透明图像?

如何在窗口顶部显示“文件、编辑、查看……”

在使用 Angular 2 显示之前完全加载内容