首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[pyqt5]PyQt5之如何设置QWidget窗口背景图片问题

[pyqt5]PyQt5之如何设置QWidget窗口背景图片问题

作者头像
云未归来
发布2025-07-20 12:52:13
发布2025-07-20 12:52:13
1350
举报

PyQt5设置QWidget窗口背景图片

QWidget 添加背景图片问题

QWidget 创建的窗口有时并不能直接用 setStyleSheet 设置窗口部分样式

比如背景图,在Qt Designer 设置好背景图样式了 QWidget#Form{ … } 并能看到效果

但转为 python3 代码后,运行程序显示不了这个背景图

如果样式使用的是 background-image 就好办了,

直接使用下面代码替换,即使用 QPalette 控件重新画背景图

1 2 3

palette = QPalette() palette.setBrush(QPalette.Background, QBrush(QPixmap(":/pic/images/sysBackground.jpg"))) self.setPalette(palette)

QSS 背景图样式区别
  • background-image: 背景图,默认原图大小,窗口空余部分填充此背景图
  • border-image: 默认跟随窗口大小进行拉伸
  • image: 默认原图大小,窗口空余部分不补充

PyQt设置窗口背景图像,以及图像自适应窗口大小变化

第一次用PyQt, 由于之前已经用了一段时间的Python,种种原因需要做界面,搜了网上很多攻略,选择了最简单的一个方法,下载PyQt5和pyqt5_tools。具体的配置这里不详细说了。

配置好之后通过如下界面点击Qt Design(自己起的名)调用QT:

点击之后创建QtWidgets的界面(test是自己起的名):

此时点击保存,选择当前工程的路径,工程目录下会多一个.ui文件,此时右击该ui文件:

利用pyuic把ui文件转换成Python代码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(“Form”) Form.resize(400, 300) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(0, 0, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Link, brush) brush = QtGui.QBrush(QtGui.QColor(255, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.LinkVisited, brush) brush = QtGui.QBrush(QtGui.QColor(255, 85, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Link, brush) brush = QtGui.QBrush(QtGui.QColor(255, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.LinkVisited, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Link, brush) brush = QtGui.QBrush(QtGui.QColor(255, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.LinkVisited, brush) Form.setPalette(palette) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate(“Form”, “Form”))

此时新建文件login.py:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPixmap,QPainter from test import Ui_Form import numpy as np import sys class mywindow(Ui_Form, QWidget): def init(self): super(mywindow, self).init() self.setupUi(self) self.num = np.random.randint(10) self.setWindowTitle(‘行人检测') print(self.num) def paintEvent(self, event):# set background_img painter = QPainter(self) painter.drawRect(self.rect()) pixmap = QPixmap("./img/1.jpg")#换成自己的图片的相对路径 painter.drawPixmap(self.rect(), pixmap) if name == ‘main': app = QApplication(sys.argv) w = mywindow() w.paintEngine() w.show() sys.exit(app.exec_())

结果:

全屏:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PyQt5设置QWidget窗口背景图片
    • QWidget 添加背景图片问题
    • QSS 背景图样式区别
  • PyQt设置窗口背景图像,以及图像自适应窗口大小变化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档