当前位置:   article > 正文

PyQt5图形和特效之设置窗口背景(六)_pyqt5设置背景颜色有哪些

pyqt5设置背景颜色有哪些

前言

窗口背景主要包括,背景色与背景图片,设置窗口背景有三种方法

  • 使用QSS设置窗口背景
  • 使用QPalette设置窗口背景
  • 实现PainEvent,使用QPainter绘制背景

QSS设置窗口背景

在QSS中,我们可以使用Background或者background-color的方式来设置背景色,设置窗口背景色之后,子控件默认会继承父窗口的背景色,如果想要为控件设置背景图片或图标,则可以使用setPixmap或则setIcon来完成。关于这两个函数的用法,可以参考本博客下的PyQt5的基础控件分栏

实例:QSS设置窗口背景

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication

app = QApplication(sys.argv)
win = QMainWindow()

#设置窗口标题与初始大小
win.setWindowTitle("界面背景图片设置")
win.resize(350, 250)
#设置对象名称
win.setObjectName("MainWindow")

# #todo 1 设置窗口背景图片
win.setStyleSheet("#MainWindow{border-image:url(./images/python.jpg);}")

#todo 2 设置窗口背景色
#win.setStyleSheet("#MainWindow{background-color: yellow}")

win.show()
sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

运行效果图如下

这里写图片描述
核心代码如下

#设置对象名称
win.setObjectName("MainWindow")

# #todo 1 设置窗口背景图片
win.setStyleSheet("#MainWindow{border-image:url(./images/python.jpg);}")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

优化 使用setStyleSheet()设置窗口背景色,核心代码和效果图如下

#todo 2 设置窗口背景色
win.setStyleSheet("#MainWindow{background-color: yellow}")
  • 1
  • 2

这里写图片描述

QPalette设置窗口背景

当使用QPalette(调试板)来设置背景图片时,需要考虑背景图片的尺寸
图片尺寸可以文件管理器打开,右键属性查看
当背景图片的宽度高度大于窗口的宽度高度时,背景图片会平铺整个背景
当背景图片宽度高度小于窗口的宽度高度时,则会加载多个背景图片

实例:QPalette设置窗口背景

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtGui import QPalette, QBrush, QPixmap

app = QApplication(sys.argv)
win = QMainWindow()

win.setWindowTitle("界面背景图片设置")
palette = QPalette()
palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/python.jpg")))
win.setPalette(palette)

# todo 1 当背景图片的宽度和高度大于窗口的宽度和高度时
win.resize(460,  255 )
#
# # todo 2 当背景图片的宽度和高度小于窗口的宽度和高度时
# win.resize(800, 600)
win.show()
sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

当背景图片的宽度高度大于窗口的宽度高度时,背景图片会平铺整个背景

这里写图片描述
当背景图片宽度高度小于窗口的宽度高度时,则会加载多个背景图片
这里写图片描述
核心代码如下

win.setWindowTitle("界面背景图片设置")
palette = QPalette()
palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/python.jpg")))
win.setPalette(palette)

# todo 1 当背景图片的宽度和高度大于窗口的宽度和高度时
win.resize(460,  255 )
#
# # todo 2 当背景图片的宽度和高度小于窗口的宽度和高度时
# win.resize(800, 600)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

PaintEvent设置窗口背景



import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter,QPixmap
from PyQt5.QtCore import Qt


class Winform(QWidget):
    def __init__(self, parent=None):
        super(Winform, self).__init__(parent)
        self.setWindowTitle("paintEvent设置背景颜色")

    def paintEvent(self, event):
        painter = QPainter(self)
        #todo 1 设置背景颜色
        painter.setBrush(Qt.green)
        painter.drawRect(self.rect())

        # #todo 2 设置背景图片,平铺到整个窗口,随着窗口改变而改变
        # pixmap = QPixmap("./images/screen1.jpg")
        # painter.drawPixmap(self.rect(), pixmap)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Winform()
    form.show()
    sys.exit(app.exec_())
  • 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
核心代码:使用paintEvent设置窗口的背景色
class Winform(QWidget):
    def __init__(self, parent=None):
        super(Winform, self).__init__(parent)
        self.setWindowTitle("paintEvent设置背景颜色")

    def paintEvent(self, event):
        painter = QPainter(self)
        #todo 1 设置背景颜色
        painter.setBrush(Qt.green)
        painter.drawRect(self.rect())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

效果如图
这里写图片描述

核心代码:设置窗口背景图片
# #todo 2 设置背景图片,平铺到整个窗口,随着窗口改变而改变
pixmap = QPixmap("./images/screen1.jpg")
painter.drawPixmap(self.rect(), pixmap)
  • 1
  • 2
  • 3
  • 4

这里写图片描述

以上是设置窗口图片与背景的三种方法,有用的话可以收藏

相关源码及素材
https://download.csdn.net/download/jia666666/10616087

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/652949
推荐阅读
相关标签
  

闽ICP备14008679号