效果图:
play.py
#!/usr/bin/env python#_*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : Operate_system_ModeView_structure -> play.py
@IDE : PyCharm
@Author : zihan
@Date : /5/4 11:16
@Desc :
================================================="""
importsysfrom PyQt5.QtWidgets importQApplication, QWidgetfrom PyQt5.QtGui importQPainter, QPixmapfrom ui_play importUi_FormclassQmyWidget(QWidget):def __init__(self, parent=None):
super().__init__(parent) #调用父类构造函数
self.ui = Ui_Form() #创建UI对象
self.ui.setupUi(self) #构造UI
def paintEvent(self, event): #绘制窗体背景图片
painter =QPainter(self)
pic= QPixmap("background.jpg")
painter.drawPixmap(0, 0, self.width(), self.height(), pic)
super().paintEvent(event)if __name__ == '__main__':
app= QApplication(sys.argv) #创建app
form =QmyWidget()
form.show()
sys.exit(app.exec_())
窗体部分就自己随便画一个窗体,图片用自己喜欢的就行。
值得注意的是paintEvent是每次窗体刷新时都会触发,那么就会带来问题,之前写过一个界面,用到了QTabView和QTreeView,程序会经常的需要进行数据交互,因此时常会触发窗体信号修改TreeView的节点,但是由于窗体更新会触发paintEvent,所以运行过程中TabView的上边沿就老是出现背景图的填充与释放,一闪一闪的,达不到效果,所以针对这种情况,不要用paintEvent函数,只需要在开始为窗体设置一个背景,后来就不管了。方法如下
#设置窗体背景图
palette =QPalette()
palette.setBrush(QPalette.Background, QBrush(QPixmap("./imgs/label.jpg")))
self.setPalette(palette)
这样就不必每次刷新界面就重绘背景图了。
还可以为窗体添加图标,会显示在窗体的左上角
self.setWindowIcon(QIcon(r'F:\2048.jpg'))
设置窗体的透明度
form.setWindowOpacity(0.5)
ok.
如果觉得《python窗体加背景图_第二十三篇 -- 为窗体添加背景图片和图标以及设置窗体透明度...》对你有帮助,请点赞、收藏,并留下你的观点哦!