1 利用qss
border-img: 会自动缩放图片
background-image: 不会自动缩放图片
self.setStyleSheet("border-image: url(:/back1.jpg)")
缺点: 该窗口的子控件(如tool_bar, status_bar) 都会被设置背景为此图片
2 利用QPalette
# 设置窗口背景图片
palette = QPalette(self.palette())
pix_map = QPixmap(":/back1.jpg").scaled(self.size())
palette.setBrush(QPalette.Background, QBrush(pix_map))
self.setPalette(palette)
3 利用paintEvent (推荐)
def paintEvent(self, event: QPaintEvent):
pix_map = QPixmap(":/back1.jpg").scaled(self.size())
painter = QPainter(self)
painter.drawPixmap(self.rect(), pix_map)
这个方法会一直重绘界面, 也有一个缺点, 当你开的一个线程触发了self.accept(), 导致界面已经销毁, 这里还在一直读self里的属性, 会导致程序崩溃, 当然, 可以通过互斥体, 也可以通过自定义信号槽解决这个问题