【Hello,PyQt】背景图片不覆盖控件的方法

发布于:2024-04-24 ⋅ 阅读:(33) ⋅ 点赞:(0)
  • 使用QPalette
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPalette, QPixmap, QBrush
class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()
        self.initUI()

    def initUI(self):
        self.resize(640, 480)
        pal = QPalette()
        pixmap = QPixmap("./imgs/img_1.png")
        pal.setBrush(QPalette.Background, QBrush(pixmap))
        self.setPalette(pal)
        # 确保窗口自动填充背
        self.setAutoFillBackground(True)


app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

使用这种方法绘制图片如果图片比较小会在窗口上重复显示,所以要先把图片缩放到窗口大小然后设置到QPalette上 newpix=pixmap.scaled(self.size())
pal.setBrush(QPalette.Background, QBrush(newpix))

在这里插入图片描述

  • 使用paintEvent事件绘制图片
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPalette, QPixmap, QBrush, QPaintEvent, QPainter


class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()
        self.initUI()

    def initUI(self):
        self.resize(640, 480)
        self.setAutoFillBackground(True)
    def paintEvent(self, a0:QPaintEvent) -> None:
        painter=QPainter(self)
        painter.drawPixmap(self.rect(), QPixmap("./imgs/img_1.png"))

app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到