Ich verwende den folgenden Code vom Designer und versuche, das Qwidget mit einem Bild als Hintergrund zu versehen und dann das Listen-Widget und das Textbearbeitungs-Widget transparent zu machen.

Das Hauptproblem, das ich habe, ist, wenn ich das Bild als Hintergrund mit dem Stylesheet für 'Form' erstelle, das es als Hintergrund für das Listen-Widget und das Textbearbeitungs-Widget übernimmt. Wie kann ich dafür sorgen, dass diese ihre eigenen Stylesheets behalten?

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.setEnabled(True)
        Form.resize(854, 667)
        Form.setAutoFillBackground(False)
        Form.setStyleSheet("background-image: url(test.jpg);")
        self.textEdit = QtGui.QTextEdit(Form)
        self.textEdit.setGeometry(QtCore.QRect(20, 400, 821, 251))
        self.textEdit.setStyleSheet(_fromUtf8("background-color: rgba(255, 255, 255, 102);"))
        self.textEdit.setObjectName(_fromUtf8("textEdit"))
        self.listWidget = QtGui.QListWidget(Form)
        self.listWidget.setGeometry(QtCore.QRect(360, 10, 471, 371))
        self.listWidget.setAutoFillBackground(True)
        self.listWidget.setStyleSheet(_fromUtf8("background-color: rgba(255, 255, 255, 102);"))
        self.listWidget.setObjectName(_fromUtf8("listWidget"))
        item = QtGui.QListWidgetItem()
        item.setCheckState(QtCore.Qt.Checked)
        self.listWidget.addItem(item)
        item = QtGui.QListWidgetItem()
        item.setCheckState(QtCore.Qt.Checked)
        self.listWidget.addItem(item)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        __sortingEnabled = self.listWidget.isSortingEnabled()
        self.listWidget.setSortingEnabled(False)
        item = self.listWidget.item(0)
        item.setText(_translate("Form", "blah blh sdfsaasdfdsfasf", None))
        item = self.listWidget.item(1)
        item.setText(_translate("Form", "test", None))
        self.listWidget.setSortingEnabled(__sortingEnabled)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

Vielen Dank

1
Trying_hard 7 Aug. 2015 im 05:30

3 Antworten

Beste Antwort

So was:

QWidget#Form {background-image: url(test.jpg);}

Ich hoffe es hilft!

2
cdonts 7 Aug. 2015 im 02:37

Ich habe das gleiche wie @rainer gemacht, aber mit dem zentralen Widget: -

self.centralwidget.setStyleSheet("background-image: url(test.jpg); background-attachment: fixed")
0
Vicrobot 24 Okt. 2019 im 11:53

Das hat bei mir funktioniert:

    self.text_field = QtGui.QPlainTextEdit(self)
    self.text_field.setMinimumSize (480,150)
    self.text_field.setStyleSheet("background-image: url(FILENAME); background-attachment: fixed")
4
rainer 15 Juli 2016 im 19:56