最近三个月本人一直专注于用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的完整代码,很简单,希望对你有帮助,今天就暂且到这了。