2016-04-21 6 views
1

Ich habe in den letzten 2 Tagen damit gekämpft ... Ich möchte einfach ein gestrecktes Hintergrundbild zu meinem Eltern QWidget hinzufügen. Ich habe buchstäblich Dutzende Male versucht, nachdem ich überall gesucht habe, aber ich bin immer noch mit diesem Problem beschäftigt. Ich verwende keine Ressourcen (von Qt Designer). PSB:Es ist nicht möglich, ein Hintergrundbild im übergeordneten QWidget mit PyQt5 hinzuzufügen.

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

Und es funktioniert nicht (Standard BG angezeigt). Aber wenn ich ausführen dies:

 Form.setStyleSheet("border-image: url(space.png) 0 0 0 0 stretch stretch;") 

Alle Qwidgets Kinder den Hintergrund erhalten, die offensichtlich nicht das, was ich will. Aber es beweist zumindest, dass es kein Problem mit der Ressource selbst gibt. Ich kann nicht glauben, dass einige grundlegende Funktionen wie ein Hintergrundbild Einstellung nicht in PyQt5 unterstützt wird ... und appearantly Ich bin nicht der einzige:

StackOverFlow

Ich habe versucht, es über Qpalette funktioniert () und es funktioniert besser, aber ich weiß nicht, wie das Hintergrundbild gestreckt machen = /:

image = QtGui.QImage("space.png") 
    palette = QtGui.QPalette() 
    palette.setBrush(10, QtGui.QBrush(image))  

    Form.setPalette(palette) 

Jede Idee?

+0

Versuch 'Form.setStyleSheet (" border-image: url (Raum. png); ")' .... übrigens hoffe du führst 'setStyleSheet' nicht zweimal (in der init Methode und woanders) – danidee

+0

Thx für deine Antwort @danidee. Ich habe deinen Befehl ausprobiert und das Bild wird leider auf alle Kinder der Eltern angewendet (1 Hlayout und 2 QGroupBox). Auch nachdem ich alle 'setStyleSheet' meiner Widget-Anwendung kommentiert habe, die ich für einige meiner QpushButton oder QGroupBox habe, stehe ich vor dem gleichen Problem ... – Trunks10

Antwort

0

Ich fand eine Lösung (mit Hilfe von Qt Forum). Ich schaute auf Qt Style Sheets Examples und konnte nicht finden, wie man ein QWidget besonders anfertigt, also konvertiere ich einfach mein QWidget in ein QMainWindow. Ich habe in der Menüleiste zu befreien und die Statusleiste, weil ich sie nicht brauche ... alles funktioniert jetzt mit 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")