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