设置背景颜色和背景图像

2024-10-01 19:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何使用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")

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

"shadow"

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


Tags: 图像image应用程序guipyqt5backgroundstop背景
1条回答
网友
1楼 · 发布于 2024-10-01 19:32:49

有两个问题:

  1. 第二行有一个输入错误,因为您在背景的末尾添加了一个;},这使得样式表无效
  2. 使用“*”通用选择器(与使用QWidget几乎相同)意味着所有的小部件都将使用为其声明的属性,并且由于您可能正在QMainWindow(从QWidget继承)上设置样式表,主窗口的中心窗口小部件均显示图像背景;应小心使用通用选择器,尤其是顶级小部件

因此,除了修复输入错误,您应该只为您感兴趣的小部件应用背景。一个好的解决方案是设置中心小部件的对象名(如果尚未设置,例如在使用设计器文件时),并在样式表中使用适当的选择器。 我还建议您在样式表上使用更好的格式和缩进,因为这将使它们更具可读性,使您更容易找到语法错误

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;
    }''')

相关问题 更多 >

    热门问题