Pyqt QSplashScreen啟動畫面


多大數應用程序啟動時都會在程序完全啟動時顯示一個啟動畫面,在程序完全啟動后消失。
程序啟動畫面可以顯示一些有關產品的信息,讓用戶在等待程序啟動的同時了解有關產品的功能,也是一個宣傳的方式。
QSplashScreen類提供了在程序啟動過程中顯示的啟動畫面的功能
當運行程序時,在顯示屏的中央出現一個啟動畫面,經過一段時間,應用程序完成初始化工作后,啟動畫面隱去,出現程序的主窗口界面


SplashScreen.py
 1 # -*- coding:utf8 -*-
 2 from PyQt4 import QtGui,QtCore
 3 from PyQt4.QtGui import *
 4 from PyQt4.QtCore import *
 5 import sys,time
 6 from clock import DigiClock
 7 class SplashScreen(QSplashScreen):
 8     def __init__(self):
 9         super(SplashScreen, self).__init__(QPixmap("clock.png"))  #啟動程序的圖片
10 
11     #效果 fade =1 淡入   fade= 2  淡出,  t sleep 時間 毫秒
12     def effect(self):
13         self.setWindowOpacity(0)
14         t = 0
15         while t <= 50:
16             newOpacity = self.windowOpacity() + 0.02     #設置淡入
17             if newOpacity > 1:
18                 break
19 
20             self.setWindowOpacity(newOpacity)
21             self.show()
22             t -= 1
23             time.sleep(0.04)
24 
25         time.sleep(1)
26         t = 0
27         while t <= 50:
28             newOpacity = self.windowOpacity() - 0.02         #設置淡出
29             if newOpacity < 0:
30                 break
31 
32             self.setWindowOpacity(newOpacity)
33             t += 1
34             time.sleep(0.04)
35 
36 
37 if __name__ == "__main__":
38     app = QtGui.QApplication(sys.argv)
39     splash = SplashScreen()
40     splash.effect()
41     app.processEvents()   ##設置啟動畫面不影響其他效果
42     window = DigiClock()     #程序的主類
43     window.show()
44     splash.finish(window)      #啟動畫面完成啟動
45     sys.exit(app.exec_())

 

clock.py

 1 # -*- coding: utf-8 -*-
 2 #時鍾
 3 from PyQt4.QtGui import *
 4 from PyQt4.QtCore import *
 5 import sys 
 6     
 7 class DigiClock(QLCDNumber): 
 8     def __init__(self,parent=None): 
 9         super(DigiClock,self).__init__(parent) 
10     
11         p=self.palette() 
12         p.setColor(QPalette.Window,Qt.red) 
13         self.setPalette(p) 
14           
15         self.setNumDigits(19)
16         self.dragPosition=None
17     
18         self.setWindowFlags(Qt.FramelessWindowHint)  
19         self.setWindowOpacity(0.5)   # 1表示100%顯示, 0.5 透明度50% 
20     
21         timer=QTimer(self) 
22         self.connect(timer,SIGNAL("timeout()"),self.showTime) 
23         timer.start(1000) 
24     
25         self.showTime()         
26         self.resize(500,60) 
27     
28     def mousePressEvent(self,event): 
29         if event.button()==Qt.LeftButton: 
30             self.dragPosition=event.globalPos()-self.frameGeometry().topLeft() 
31             event.accept() 
32         if event.button()==Qt.RightButton: 
33             self.close() 
34     
35     def mouseMoveEvent(self,event): 
36         if event.buttons() & Qt.LeftButton: 
37             self.move(event.globalPos()-self.dragPosition) 
38             event.accept() 
39     
40     def showTime(self): 
41         time=QTime.currentTime()
42         date=QDate.currentDate()
43         text= date.toString("yyyy-MM-dd")+" "+time.toString("hh:mm:ss")     
44         self.display(text)
45 
46 if __name__ == '__main__':
47     app=QApplication(sys.argv)
48     form=DigiClock()
49     form.show()
50     app.exec_()

 

clock.png


效果:

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM