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

目录

  • PyQt5设置QWidget窗口背景图片
    • QWidget 添加背景图片问题
    • QSS 背景图样式区别
  • PyQt设置窗口背景图像,以及图像自适应窗口大小变化
  • 总结

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_())

结果:

全屏:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/172689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习记录】从0开始的Linux学习之旅——驱动模块编译与加载

一、概述 Linux操作系统通常是基于Linux内核,并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程,具有强大的网络功能和良好的兼容性。本文主要讲述如何编译及加载linux驱动模块。 二、概念及原理 应用程序通过系统调用与内…

软件介绍02- flameshot截图软件(linux系统可用)

1 软件介绍 在Windows和mac平台一直都使用着snipaste截图,非常好用,又能够钉图。遗憾是并没有开发linux版本,真不知道为什么。 好在终于找到一款截图软件,flameshot截图软件,可以平替snipaste。 下载网址:…

华为eNSP使用教程(Enterprise Network Simulation Platform,企业网络仿真平台)

文章目录 华为eNSP使用教程详解引言eNSP界面快速入门启动与初始设置主界面组成创建和管理项目 构建网络拓扑添加和连接设备配置设备参数示例:配置设备接口IP 保存配置 仿真网络功能启动与测试示例:测试网络连通性 使用调试工具 疑难技术点解析路由协议配…

C语言WFC绘制矩形

代码实现: void CCGDrawingView::Rectangle(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, COLORREF color,CDC* pDC) {CPen redPen(PS_SOLID, 1, color);CBrush redBursh(color);CPen* pOldPen pDC->SelectObject(&redPen);CBrush* p…

Django(十一、auth认证模块)

文章目录 一、auth介绍auth认证相关模块及操作扩展auth_user表 一、auth介绍 Django自带一个admin路由,但是需要我们提供管理员账户和密码,如果想要使用admin后台管理,需要先创建表,然后创建管理员账户。 直接执行数据类迁移命令…

hivesql 将json格式字符串转为数组

hivesql 将json格式字符串转为数组 完整过程SQL在文末 json 格式字符串 本案例 json 字符串参考格式,请勿使用本数据 {"data": [{"province": 11,"id_card": "110182198903224674","name": "闾丘饱乾"…

【JAVA学习笔记】71 - JDBC入门

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter25/src/com/yinhai/dao_ 一、JDBC概述 1.基本介绍 1. JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。 2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动…

YARN工作流程详解

图1 图2 图1 -作业提交阶段: 1、client 提交job,向 ResourceManager【RM】 申请job_id; 2、RM 返回 job_id 及资源提交路径 给 client 3、client 把job所需的资源提交 到 3中指定的路径中 4、client 上传完成资源后,向RM 发送执行作业请求,RM…

《杀死一只知更鸟》

今天在读一篇英文文献的时候,摘要里有这样一句话:The developed algorithm is successfully applied to mock and real word problems。看到mock这个单词,想起最近一周在看的一本书《杀死一只知更鸟》,书的英文名叫《To Kill A Mo…

手写操作js数组的常见方法

文章目录 1.push2.pop3.unshift4.shift5.slice6.splice7.forEach8.map9.filter10.some11.every12.concat13.join14.indexOf15.lastIndexOf16.reserve17.sort18.find19.reduce 1.push // push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 // 末尾添加…

BGP选路实验

要求 1 使用PreVal策略,确保R4通过R2到达192.168.10.0/24 2 使用AS_Path策略,确保R4通过R3到达192.168.11.0/24 3 配置MED策略,确保R4通过R3到达192.168.12.0/24 4 使用Local Preference策略,确保R1通过R2到达192.168.1.0/24 5 使…

服务器tar压缩解压文件

文章目录 一、前言二、命令2.1、解压2.2、压缩 三、最后 一、前言 前端上传dist代码到服务器上后,是在linux上操作,所以和window有所不同。一般是打好dist,然后压缩成gz传输到服务器,此时在服务器上可能涉及到解压和压缩的操作&a…

力扣日记11.25-【二叉树篇】对称二叉树

力扣日记:【二叉树篇】对称二叉树 日期:2023.11.25 参考:代码随想录、力扣 101. 对称二叉树 题目描述 难度:简单 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,…

操作系统题目分类总结 | 进程管理 内存管理 文件系统 设备管理

系列文章如下 学习过程中一定要有系统观念(知识框架,每一章开头都会有一个思维导图),知道目前自己在学习的是哪一板块的内容,和前面有什么样的联系 操作系统的很多知识点前后都是联系非常紧密的,去一点一…

PCL 计算一条直线与一条线段的距离

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里的线段我们仍然使用一种参数化的表示,即 Q [ 0 ] + s [ 0 ] ∗ ( Q [ 1 ] − Q [ 0

Blender 连续 5 天遭受大规模 DDoS 攻击

Blender 发布公告指出,在2023年11月18日至23日期间,blender.org 网站遭受了持续的分布式拒绝服务(DDoS)攻击,攻击者通过不断发送请求导致服务器超载,使网站运营严重中断。此次攻击涉及数百个 IP 地址的僵尸…

ATK-ESP8266 WIFI模块串口通信通用实现方案

ATK-ESP8266 WIFI模块是一种常用的无线模块,它可以通过串口与外部设备进行通信,实现数据的收发和控制。本文将介绍一种通用的实现方案,帮助您在项目中使用ATK-ESP8266 WIFI模块进行串口通信。 【方案概述】 这个通用实现方案涵盖了ATK-ESP82…

springboot(ssm付费自习室管理系统 自习室预约平台Java(codeLW)

springboot(ssm付费自习室管理系统 自习室预约平台Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&am…

算法-技巧-中等-颜色分类

记录一下算法题的学习12 颜色分类 题目:给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝…

Android 相机库CameraView源码解析 (二) : 拍照

1. 前言 这段时间,在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位,在项目前期,的确为我们节省了不少时间。 但随着项目持续深入,对于CameraView的使用进入深水区,逐…