设置背景颜色和背景图片

Setting background color and background image

我想知道如何使用 PyQt5 在 Python GUI 应用程序中设置背景颜色和背景图像。我不知道如何同时设置它们。我试过

self.window.setStyleSheet("* {color: qlineargradient(spread:pad, x1:0 y1:0, x2:1 y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));"
                  "background: qlineargradient( x1:0 y1:0, x2:1 y2:0, stop:0 #ffc982, stop:1 #ff9982);}; background-image: url(image.png); background-repeat: no-repeat")

但它不起作用。我收到“无法解析样式表”错误。显然,图像与代码的方向相同。
另外,当我只设置它显示的背景图像时 “阴影”:

你知道如何解决这些问题吗?

有两个问题:

  1. 第二行有错字,因为你在后台添加了一个;},导致样式表失效;
  2. 使用“*”通用选择器(这几乎与使用 QWidget 相同)意味着 所有 小部件将使用声明的属性它,并且由于您可能在 QMainWindow(继承自 QWidget)上设置样式表,因此图像背景显示在主要 window 的中央小部件上; 通用选择器 应谨慎使用,尤其应避免用于顶级小部件;

因此,除了更正拼写错误之外,您应该只为您感兴趣的小部件应用背景。一个好的解决方案可能是设置中央小部件的 object name(如果尚未设置,例如在使用 Designer 文件时)并在样式表中使用适当的选择器。 我还建议您在样式表上使用更好的格式和缩进,因为这将使它们更具可读性,让您更容易找到语法错​​误。

self.window.centralWidget().setObjectName('centralWidget')
self.window.setStyleSheet('''
    QWidget#centralWidget {
        color: qlineargradient(spread:pad, x1:0 y1:0, x2:1 y2:0, 
               stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));
        background: qlineargradient(x1:0 y1:0, x2:1 y2:0, 
                    stop:0 #ffc982, stop:1 #ff9982);
        background-image: url(image.png);
        background-repeat: no-repeat;
    }''')