Фоновая картинка PyQt
Как можно вставить картинку фоном. Нижеприведенный вариант кода не срабатывает
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class ClassesPage1(QtWidgets.QWizardPage):
def __init__(self, *args, **kwargs):
super(ClassesPage1, self).__init__(*args, **kwargs)
self.setTitle("...")
self.setSubTitle("...")
self.checkBox_1 = QtWidgets.QCheckBox('...')
self.checkBox_2 = QtWidgets.QCheckBox('...')
self.checkBox_3 = QtWidgets.QCheckBox('...')
self.checkBox_4 = QtWidgets.QCheckBox('...')
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.checkBox_1)
self.layout.addWidget(self.checkBox_2)
self.layout.addWidget(self.checkBox_3)
self.layout.addWidget(self.checkBox_4)
self.setLayout(self.layout)
self.checkBox_1.stateChanged.connect(self.check)
self.checkBox_2.stateChanged.connect(self.check)
self.checkBox_3.stateChanged.connect(self.check)
self.checkBox_4.stateChanged.connect(self.check)
self.listCheckBox = [self.checkBox_1, self.checkBox_2, self.checkBox_3, self.checkBox_4]
self.a = 0
def check(self, state):
self.a = 0
if state == Qt.Checked:
a = a + 1
for checkBox in self.listCheckBox:
if checkBox.isChecked():
self.a += 1
print(self.a)
def nextId(self):
return Wizard.class4
stylesheet = '''
QWidget {
background-image: url("C:\111.jpg");
}
'''
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
app.setStyleSheet(stylesheet)
w = ClassesPage1()
w.show()
sys.exit(app.exec_())
Ответы (3 шт):
Вы адрес картинки с диска указали, насколько я знаю нужно создать свой "архив" в qt designer. Открываете стили элемента, >добавить ресурс>нажмите на карандаш>кнопка слева внизу создать этот архив>первая кнопка второй строчки "добавить приставку".
Проблема решилась как
stylesheet = '''
QWidget {
background-image: url("C:/111.png"); #С jpg не хочет работать, тем не менее
}
'''
Qt штатно с jpg не работает. "Из коробки" есть поддержки png (про остальные врать не буду). Для того чтобы корректно работало с jpg необходимо с приложением таскать imageformats\qjpeg.dll
Далее. Если есть желание интегрировать картинку в приложение и не таскать ее отдельно, см. ответ https://ru.stackoverflow.com/a/1125878/365297