无法使用 PyQt5 在父 QWidget 中添加背景图像



在过去的两天里我一直在为此苦苦挣扎......我想简单地将拉伸的背景图像添加到我的父QWidget。到处搜索后,我真的尝试了几十次,但我仍然坚持这个问题。我不使用资源(来自qt设计器)。公安局 :

from PyQt5 import QtCore, QtWidgets, QtGui
import sys
class Ui_Form(QtWidgets.QWidget):
def __init__(self):
    QtWidgets.QWidget.__init__(self)
    self.setupUi(self) 
def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(860, 619)
    Form.setStyleSheet("QWidget#Form {border-image: url(space.png) 0 0 0 0 stretch stretch;}") 

它不起作用(显示默认BG)。但是当我执行这个时:

        Form.setStyleSheet("border-image: url(space.png) 0 0 0 0 stretch stretch;")

所有Qwidgets的孩子都得到了背景,这显然不是我想要的。但它至少证明资源本身没有问题。我不敢相信 PyQt5 不支持一些基本功能,例如设置背景图像......看来我不是唯一一个:

堆栈溢出

我试图通过 Qpalette() 让它工作,它工作得更好,但我不知道如何使背景图像拉伸 =/:

    image = QtGui.QImage("space.png")
    palette = QtGui.QPalette()
    palette.setBrush(10, QtGui.QBrush(image))     
    Form.setPalette(palette)

知道吗?

我找到了一个解决方案(在Qt论坛的帮助下)。我查看了Qt样式表示例,找不到如何自定义QWidget,所以我只是将QWidget转换为QMainWindow。我摆脱了菜单栏和状态栏,因为我不需要它们......现在使用 QMainWindow :)一切正常

class Ui_MainWindow(QtWidgets.QMainWindow):
def __init__(self):
  super().__init__()       
  self.setupUi(self)
def setupUi(self, MainWindow):
  MainWindow.setObjectName("MainWindow")
  MainWindow.resize(856, 610)
  MainWindow.setStyleSheet("#MainWindow { border-image: url(space.png) 0 0 0 0 stretch stretch; }")
  self.centralwidget = QtWidgets.QWidget(MainWindow)
  self.centralwidget.setObjectName("centralwidget")

最新更新