设置背景颜色和背景图片
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")
但它不起作用。我收到“无法解析样式表”错误。显然,图像与代码的方向相同。
另外,当我只设置它显示的背景图像时
“阴影”:
你知道如何解决这些问题吗?
有两个问题:
- 第二行有错字,因为你在后台添加了一个
;}
,导致样式表失效;
- 使用“
*
”通用选择器(这几乎与使用 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;
}''')
我想知道如何使用 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")
但它不起作用。我收到“无法解析样式表”错误。显然,图像与代码的方向相同。
另外,当我只设置它显示的背景图像时
“阴影”:
你知道如何解决这些问题吗?
有两个问题:
- 第二行有错字,因为你在后台添加了一个
;}
,导致样式表失效; - 使用“
*
”通用选择器(这几乎与使用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;
}''')