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