PyQt5 用QPainter实现启动界面及动画效果

       最近三个月本人一直专注于用python做深度学习图像处理和识别模型的架构及训练,并负责深度学习软件界面的构建,现在项目已经接近尾声了,期间也遇到各种各样莫名奇妙的难题,但最终在本人不懈努力及结合前人的一些踩坑经验,诸多问题都得到了解决,当然,踩坑的过程也是自己学习和成长的过程,再也不觉得人工智能是那么遥不可及了,甚幸,甚幸!做完这个项目,却越发觉得自己需要学习的东西更多,要想在人工智能领域走得更远,需要在这条道路上不断学习,不断探索,但我相信终有一天,人工智能会于我们生活工作中无处不在,就像互联网那样,我们再也离不开它了。

       可能是一直在做项目,请原谅我发了一阵不短的感慨,我心里感觉畅快多了,君若不喜欢,尽可略过,哈哈。不知不觉,项目到尾声了才想起要把自己踩过的坑好好的总结一番了,真是恍然大悟啊(哈哈)。最近需要用PyQt5实现软件的启动界面,当然首先用的是官方提供的QSplashScreen,但发现它在showMesage的时候不能设置message(启动图标文字)的Geometry,而只是提供了粗略的文字对齐,诸如如Qt.Align之类的。但启动界面上的文字我们往往需要文字显示在特定的位置,于是乎还尝试了诸如wx库等方法的Splash都是无法实现该效果,于是乎尝试用QPainter去把启动界面做出来,废话不多说了,直接上代码:

#自定义Splash类
class MySplash(QWidget):
    def __init__(self):
        super(MySplash, self).__init__()
        self.setAttribute(Qt.WA_TranslucentBackground, True) #设置背景透明
        self.setWindowFlags(Qt.FramelessWindowHint) #设置无边框
        self.setGeometry(700,190,800,800)
        self.text = "初始化程序...0%"

    def paintEvent(self, QPaintEvent):
        self.p = QPainter(self)
        self.p.setPen(QPen())
        self.p.setBrush(QBrush())
        self.p.drawPixmap(0, 0, QPixmap("icons/mysplash.png"))  #加载自己的图片
        self.p.drawText(QRect(26,342,200,100), Qt.AlignCenter, self.text) #showMesage
    def setText(self,text):
        self.text = text
        self.paintEvent(QPaintEvent)

#启动界面显示时间的设置
def load_Message(splash):
        for i in range(1, 5):  # 显示时间4秒
            time.sleep(1)  # 睡眠
            splash.setText("初始化程序...{0}%".format(25*i))
            splash.update()
            qApp.processEvents()

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    splash = MySplash()
    splash.show()                         # 显示启动界面
    qApp.processEvents()         
    window.load_Message(splash)                # 加载文字进度信息
    splash.close()   # 隐藏启动界面
    sys.exit(app.exec_())
      

好了,以上就是自定义pyqt的完整代码,很简单,希望对你有帮助,今天就暂且到这了。

猜你喜欢

转载自blog.csdn.net/qq_33294137/article/details/85242449