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

时间:2016-04-21 23:26:53

标签: python python-3.x pyqt5

过去两天我一直在努力解决这个问题...我想简单地将拉伸的背景图片添加到我的父QWidget中。在搜索到处之后,我确实尝试了几十次,但我仍然坚持这个问题。我没有使用资源(来自qt设计师)。 PSB:

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不支持设置背景图像等基本功能......而且我不是唯一的支持:

StackOverFlow

我已经尝试通过Qpalette()使其工作并且效果更好,但我不知道如何使背景图像拉伸= /:

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

    Form.setPalette(palette)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案(在Qt论坛的帮助下)。我看了Qt Style Sheets Examples并找不到如何自定义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")