繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM