[英]Impossible to add a background-image in parent QWidget with PyQt5?
在过去的 2 天里,我一直在努力解决这个问题......我想简单地向我的父 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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.