[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。 下载网址:…

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…

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 使…

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

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

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

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

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

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

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

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

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

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

WordPress无需插件禁用WP生成1536×1536和2048×2048尺寸图片

我们在使用WordPress上传图片媒体文件的时候,是不是看到媒体库中有15361536和20482048的图片文件,当然这么大的文件会占用我们的服务器空间,如何禁止掉呢? function remove_default_image_sizes( $sizes) {unset( $sizes[1536x15…

spring-webmvc练习-日程管理-访问后端展示列表数据

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/schedule.js import request from "../util/request.js";export let getSchedu…

[架构之路-253]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 结构化设计的主要评估指标:高内聚(模块内部)、低耦合(模块之间)的含义

目录 前言: 一、软件工程中的软件设计种类:根据宏观到微观分 (1)软件架构设计(层次划分、模块划分、职责分工): (2)软件高层设计、概要设计(功能模块的接…

【c++随笔14】虚函数表

【c随笔14】虚函数表 一、虚函数表(Virtual Function Table)1、定义2、查看虚函数表2.1、 问题:三种类型,包含一个int类型的class、一个int类型的变量、int类型的指针:这三个大小分别是多少呢?2.2、怎么发现…

IT问题解答类型网站源码

问答网是一款为IT工程师提供的问答平台,旨在帮助用户在线获取专业知识和相关问题的答案。在问答网,用户可以轻松找到其他人的问答问题,并在这里寻求解答。如果您有任何想要解决的问题,都可以在此发布问题并得到其他同行的解答。 …

CSS之弹性盒子Flexible Box

我想大家在做布局的时候,没接触flex布局之前,大家都是用浮动来布局的,但现在我们接触了flex布局之后,我只能说:“真香”。让我为大家介绍一下弹性盒子模型吧! Flexible Box 弹性盒子 在我们使用弹性盒子时&…

【算法】链表-20231127

这里写目录标题 一、面试题 02.02. 返回倒数第 k 个节点二、82. 删除排序链表中的重复元素 II三、141. 环形链表 一、面试题 02.02. 返回倒数第 k 个节点 提示 简单 130 相关企业 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 注意:本…