多大數應用程序啓動時都會在程序徹底啓動時顯示一個啓動畫面,在程序徹底啓動後消失。
程序啓動畫面能夠顯示一些有關產品的信息,讓用戶在等待程序啓動的同時瞭解有關產品的功能,也是一個宣傳的方式。
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.pygit
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
效果: