PyQt 实现软件开机界面


PyQt 实现软件开机界面

   开机显示无边框窗口,进度条显示,并显示加载百分比。

效果图:

 文件目录:

 

 

ui_Splasdh.ui          为QTDesigner 软件生成的文件

ui_Splash.py           为ui_Splasdh.ui 转换得到py的文件

Splash-Little.png     为开机图片

image.qrc                为资源文件,供Qt Designer制作GUI时链接图片。

image.py                 为image.qrc 转换而来的py文件,主程序运行调用。

SplashCall.py          为开机画面主程序

制作GUI时的图片插入

Ui界面使用 QT Designer 制作,插入png图片步骤为:新建qrc文件,选择图片,之后用Qlabel插入图片,qrc文件转换为py文件,后续调用。转换步骤这里不详细描述。

 

SplashCall.py  程序代码:

 1 import sys
 2 from PyQt5 import QtCore
 3 from PyQt5.QtWidgets import QApplication, QWidget
 4 from PyQt5.QtCore import QBasicTimer , pyqtSignal
 5 from ui_Splash import Ui_Form
 6 
 7 # 主窗口
 8 class Splash(QWidget):
 9     splashClose = pyqtSignal()                               #自定义信号
10     def __init__(self, parent=None):
11         super().__init__(parent)
12         self.ui = Ui_Form()                                 #命名ui 为form的对象
13         self.ui.setupUi(self)                               #导入QWidget基本窗体到ui
14         self.setWindowFlags(QtCore.Qt.FramelessWindowHint|QtCore.Qt.WindowStaysOnTopHint)  # 设置无边框并置顶 '''注意:ui是Ui_from的对象,不是窗体基类,所以不能使用ui.setWindowFlags'''
15         self.setAttribute(QtCore.Qt.WA_TranslucentBackground)      # 设置背景为透明色
16         self.timeRun() #计时开始
17 
18 #进度条逻辑
19     def timeRun(self):
20         self.timer = QBasicTimer()
21         self.step = 0
22         self.timer.start(10,self) #设置10超时时间 并开始计时
23 
24     def timerEvent(self, evet):
25         if self.step >= 100:
26             self.timer.stop()
27             self.splashClose.emit() #发出信号,可打开其它界面
28             self.close()  #关闭开机画面
29             return
30         else:
31             self.step = self.step + 1
32             self.ui.prg.setValue(self.step)
33             self.ui.lab1.setText('正在加载...{}%'.format(self.step))
34             return
35         
36 if __name__ == "__main__":
37     app = QApplication(sys.argv)
38     myWin = Splash()
39     myWin.show()
40     sys.exit(app.exec_())

ui_Splash.py  程序代码:

 1 # -*- coding: utf-8 -*-
 2 
 3 # Form implementation generated from reading ui file 'ui_Splash.ui'
 4 #
 5 # Created by: PyQt5 UI code generator 5.11.3
 6 #
 7 # WARNING! All changes made in this file will be lost!
 8 
 9 from PyQt5 import QtCore, QtGui, QtWidgets
10 
11 class Ui_Form(object):
12     def setupUi(self, Form):
13         Form.setObjectName("Form")
14         Form.resize(633, 426)
15         Form.setStyleSheet("")
16         self.prg = QtWidgets.QProgressBar(Form)
17         self.prg.setGeometry(QtCore.QRect(20, 360, 591, 8))
18         self.prg.setStyleSheet("")
19         self.prg.setProperty("value", 27)
20         self.prg.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter)
21         self.prg.setTextVisible(False)
22         self.prg.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
23         self.prg.setObjectName("prg")
24         self.label = QtWidgets.QLabel(Form)
25         self.label.setGeometry(QtCore.QRect(20, 0, 591, 411))
26         self.label.setStyleSheet("image: url(:/splash/Splash-Little.png);")
27         self.label.setText("")
28         self.label.setObjectName("label")
29         self.lab1 = QtWidgets.QLabel(Form)
30         self.lab1.setGeometry(QtCore.QRect(30, 340, 141, 16))
31         self.lab1.setStyleSheet("color: rgb(255, 255, 255);")
32         self.lab1.setObjectName("lab1")
33         self.label.raise_()
34         self.prg.raise_()
35         self.lab1.raise_()
36 
37         self.retranslateUi(Form)
38         QtCore.QMetaObject.connectSlotsByName(Form)
39 
40     def retranslateUi(self, Form):
41         _translate = QtCore.QCoreApplication.translate
42         Form.setWindowTitle(_translate("Form", "Form"))
43         self.lab1.setText(_translate("Form", "正在加载...100%"))
44 
45 import image
View Code

 

将开机界面融合到另编辑的主程序中

 1 import sys
 2 from PyQt5.QtWidgets import QApplication, QWidget
 3 from SplashCall import Splash
 4 #from YOU import YOU_form  ##调用窗口
 5 
 6 # 主窗口
 7 class MainWindow(QWidget): #自定义继承你自己的主页窗口代码
 8     def __init__(self):
 9         super().__init__()
10         self.setupUi(self)
11 
12 
13     def windowShow(self):
14         youWin.show()  #你的主页程序
15 
16 
17 if __name__ == "__main__":
18     app = QApplication(sys.argv)
19     youWin = MainWindow()  
20 
21     UiSplash = Splash()  ##开机界面
22     UiSplash.show()
23     UiSplash.splashClose.connect(youWin.windowShow) #开机界面关闭连接打开你的主页
24 
25     sys.exit(app.exec_())

上面的代码,可以将你自己的程序继承进来,程序运行时,打开开机画面,开机画面运行结束后,触发信号,打开你的自己的窗口程序。

 

完成

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM