Не могу поставить фоновую картинку в PyQt5

Пытался поставить через палитру выдает черный фон. Пытался в самой Qt Designer через stylsheet, тоже нету фоновой картинку. Но в Qt Designer при предпросмотре фоновая картинка есть.

Выдает такое в консоли Could not create pixmap from ....

Также выдает Unknown property weight, но это вроде ни на что ни влияет

Основной код - https://pastebin.com/t0Y6bdQu

Код из QtDesigner - https://pastebin.com/7hT4KSkc


Ответы (1 шт):

Автор решения: S. Nick

Строка которую вы искали выглядит так:

border-image: url(table.png) 0 0 0 0 stretch stretch;

Sorry, но я слышал от мудрых людей, что глобальные переменные - это ЗЛО.

Я немного переписал ваш пример с учетом ООП.

По ходу исправил некоторые ошибки, но вам еще есть над чем поработать.

main.py

import sys
import random
from PyQt5 import QtCore, QtGui, QtWidgets
from crestiki import Ui_MainWindow


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        #Hooc logic
        self.move = 0
        self.a = 0
        self.willmove = 1
        self.side = ['X' , 'O']
        self.main = []                    

        self.Player1Side = ...
        self.Player2Side = ...

        self.sides()
        self.refresh()
        self.ui.lineEdit.setFocus()

        self.ui.pushButton_9.clicked.connect(lambda: self.bp(9))
        self.ui.pushButton_8.clicked.connect(lambda: self.bp(8))
        self.ui.pushButton_7.clicked.connect(lambda: self.bp(7))
        self.ui.pushButton_6.clicked.connect(lambda: self.bp(6))
        self.ui.pushButton_5.clicked.connect(lambda: self.bp(5))
        self.ui.pushButton_4.clicked.connect(lambda: self.bp(4))
        self.ui.pushButton_3.clicked.connect(lambda: self.bp(3))
        self.ui.pushButton_2.clicked.connect(lambda: self.bp(2))
        self.ui.pushButton_1.clicked.connect(lambda: self.bp(1))
        self.ui.pushButton_9.clicked.connect(lambda: self.check())
        self.ui.pushButton_8.clicked.connect(lambda: self.check())
        self.ui.pushButton_7.clicked.connect(lambda: self.check())
        self.ui.pushButton_6.clicked.connect(lambda: self.check())
        self.ui.pushButton_5.clicked.connect(lambda: self.check())
        self.ui.pushButton_4.clicked.connect(lambda: self.check())
        self.ui.pushButton_3.clicked.connect(lambda: self.check())
        self.ui.pushButton_2.clicked.connect(lambda: self.check())
        self.ui.pushButton_1.clicked.connect(lambda: self.check())
        self.ui.lineEdit.returnPressed.connect(lambda: self.line_set_next_name(self.move))        

    def sides(self):
        self.Player1Side = random.choice(self.side)
        if self.Player1Side == self.side[0]:
            self.Player2Side = self.side[1]
        else:
            self.Player2Side = self.side[0]        

    def refresh(self):
        self.ui.pushButton_1.setText('1')
        self.ui.pushButton_2.setText('2')
        self.ui.pushButton_3.setText('3')
        self.ui.pushButton_4.setText('4')
        self.ui.pushButton_5.setText('5')
        self.ui.pushButton_6.setText('6')
        self.ui.pushButton_7.setText('7')
        self.ui.pushButton_8.setText('8')
        self.ui.pushButton_9.setText('9')        

    #Фукнция проверки кто ходит и выполнение хода
    def bp(self, num):
        print(f'num -> {num}')
        if  self.a == 0:
            exec(f'self.ui.pushButton_{num}.setText("X")')      
            self.a = 1
            self.print2()
        else:
            exec(f'self.ui.pushButton_{num}.setText("O")')
            self.a = 0
            self.print1()        

    #Фукнция перехода хода следующему игроку
    def print1(self):
        if not self.main:
            msg = QtWidgets.QMessageBox.information(None, 'Внимание', 'Вы не ввели ник игрока') 
            return        
        self.ui.textEdit_5.setPlainText("Ходит игрок: {}".format(self.main[self.a]))

    #Функция перехода хода следующему игроку
    def print2(self):
        if not self.main:
            msg = QtWidgets.QMessageBox.information(None, 'Внимание', 'Вы не ввели ник игрока') 
            return
        self.ui.textEdit_5.setPlainText("Ходит игрок: {}".format(self.main[self.a]))

    def check(self):
#        global a
#        global move
        if self.ui.pushButton_1.text() == self.ui.pushButton_2.text() == self.ui.pushButton_3.text() or \
        self.ui.pushButton_4.text() == self.ui.pushButton_5.text() == self.ui.pushButton_6.text() or \
        self.ui.pushButton_7.text() == self.ui.pushButton_8.text() == self.ui.pushButton_9.text() or \
        self.ui.pushButton_1.text() == self.ui.pushButton_5.text() == self.ui.pushButton_9.text() or \
        self.ui.pushButton_3.text() == self.ui.pushButton_5.text() == self.ui.pushButton_9.text() or \
        self.ui.pushButton_1.text() == self.ui.pushButton_4.text() == self.ui.pushButton_7.text() or \
        self.ui.pushButton_2.text() == self.ui.pushButton_5.text() == self.ui.pushButton_8.text() or \
        self.ui.pushButton_3.text() == self.ui.pushButton_6.text() == self.ui.pushButton_9.text():
            if self.a == 0:
                self.a = 1
            else:
                self.a = 0

            self.ui.textEdit_5.setPlainText("Игра закончена!\nПобидил Игрок:    {}".format(self.main[self.a]))
            result = QtWidgets.QMessageBox.question(
                None, 
                "Игра завершена", 
                "Победил игрок: {}\n Хотите сыграть еще раз?".format(self.main[self.a]), 
                buttons = QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.No, 
                defaultButton = QtWidgets.QMessageBox.Ok)

            print(f'self.main===>>> {self.main}')    
            if result == 1024:
                print(f'result == 1024:') 
                self.refresh()
                self.sides()
                self.restart()
            else:
                print(f'result == else:')
                self.main = []                                  # +++
                self.refresh()
                self.reload()

    #Происходит ввод ников и последующее начало игры
    def line_set_next_name(self, num):
        print(f'def line_set_next_name(self, num): {num}')
        if num == 0:
#            global move
            self.ui.textEdit_3.setPlainText(self.ui.lineEdit.text())
            self.ui.textEdit_5.setPlainText("Введите ник второго игрока:")
            self.ui.lineEdit.clear()
            self.move += 1
            print(f'self.move -> {self.move}')
        if num == 1:
#            global main
            self.ui.textEdit_4.setPlainText(self.ui.lineEdit.text())
            self.ui.lineEdit.clear()
            player1 = self.ui.textEdit_3.toPlainText()
            player2 = self.ui.textEdit_4.toPlainText()
            self.ui.textEdit_5.setPlainText("Игра начинается!")
            if self.Player1Side == self.side[0]:
                self.main = [player1, player2]
                self.ui.label.setText("x")
                self.ui.label_2.setText("O")
            else:
                self.main = [player2, player1]
                self.ui.label.setText("O")
                self.ui.label_2.setText("x")
            self.print1()                

    #Рестарт игры без изменения ников
    def restart(self):
        player1 = self.ui.textEdit_3.toPlainText()
        player2 = self.ui.textEdit_4.toPlainText()
        self.ui.textEdit_5.setPlainText("Игра начинается!")
        if self.Player1Side == self.side[0]:
            self.main = [player1, player2]
            self.ui.label.setText("x")
            self.ui.label_2.setText("O")
        else:
            self.main = [player2, player1]
            self.ui.label.setText("O")
            self.ui.label_2.setText("x")
        self.print1()

    #Рестарт игры с измененим ников
    def reload(self):
        self.ui.textEdit_3.setPlainText("Введите ник")
        self.ui.textEdit_4.setPlainText("Введите ник")
        self.ui.textEdit_5.setPlainText("Введите ник первого игрока:")
        self.ui.lineEdit.setFocus()
        self.ui.label.setText("")
        self.ui.label_2.setText("")
        self.move = 0


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow() 
    window.show()
    sys.exit(app.exec_())

crestiki.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(774, 555)
        MainWindow.setStyleSheet('''
        QMainWindow {
            border-image: url(table.png) 0 0 0 0 stretch stretch;
        }
        QPushButton {
            background-color: white;
            height: 100px;
/*
            weight: 100px;
*/ 
            font-size: 14px;
            font-weight: bold;
            border: none;
            text-align: center;
        }
        QPushButton:hover {
            background-color: silver;
        }

        QLineEdit {
            text-align: center;     /* ??? */

        }

        ''')

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(250, 10, 271, 314))
        self.gridLayoutWidget.setObjectName("gridLayoutWidget")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget)
        self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout_2.addWidget(self.pushButton_3, 0, 2, 1, 1)
        self.pushButton_6 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_6.setObjectName("pushButton_6")
        self.gridLayout_2.addWidget(self.pushButton_6, 1, 2, 1, 1)
        self.pushButton_9 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_9.setObjectName("pushButton_9")
        self.gridLayout_2.addWidget(self.pushButton_9, 2, 2, 1, 1)
        self.pushButton_5 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_5.setObjectName("pushButton_5")
        self.gridLayout_2.addWidget(self.pushButton_5, 1, 1, 1, 1)
        self.pushButton_1 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_1.setObjectName("pushButton_1")
        self.gridLayout_2.addWidget(self.pushButton_1, 0, 0, 1, 1)
        self.pushButton_7 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_7.setObjectName("pushButton_7")
        self.gridLayout_2.addWidget(self.pushButton_7, 2, 0, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout_2.addWidget(self.pushButton_2, 0, 1, 1, 1)
        self.pushButton_8 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_8.setObjectName("pushButton_8")
        self.gridLayout_2.addWidget(self.pushButton_8, 2, 1, 1, 1)
        self.pushButton_4 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout_2.addWidget(self.pushButton_4, 1, 0, 1, 1)
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(70, 370, 141, 31))
        self.textEdit.setReadOnly(True)
        self.textEdit.setObjectName("textEdit")
        self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_2.setGeometry(QtCore.QRect(560, 370, 141, 31))
        self.textEdit_2.setReadOnly(True)
        self.textEdit_2.setObjectName("textEdit_2")
        self.textEdit_3 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_3.setGeometry(QtCore.QRect(70, 400, 141, 31))
        self.textEdit_3.setStyleSheet("color: purple;\n"
"font-size: 14px;")
        self.textEdit_3.setReadOnly(True)
        self.textEdit_3.setObjectName("textEdit_3")
        self.textEdit_4 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_4.setGeometry(QtCore.QRect(560, 400, 141, 31))
        self.textEdit_4.setStyleSheet("color: green;\n"
"font-size: 14px;\n"
"")
        self.textEdit_4.setReadOnly(True)
        self.textEdit_4.setObjectName("textEdit_4")
        self.textEdit_5 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_5.setGeometry(QtCore.QRect(300, 370, 171, 61))
        self.textEdit_5.setStyleSheet("color: red;\n"
"font-size: 12px;\n"
"")
        self.textEdit_5.setObjectName("textEdit_5")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(300, 450, 171, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.textEdit_6 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_6.setGeometry(QtCore.QRect(300, 330, 171, 31))
        self.textEdit_6.setStyleSheet("color: red;\n"
"font-size: 12px;\n"
"")
        self.textEdit_6.setReadOnly(True)
        self.textEdit_6.setObjectName("textEdit_6")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(130, 420, 21, 41))
        self.label.setStyleSheet("font-size: 32px;")
        self.label.setText("")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(620, 420, 21, 51))
        self.label_2.setStyleSheet("font-size: 30px;")
        self.label_2.setText("")
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 774, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Крестики Нолики"))
        self.pushButton_3.setText(_translate("MainWindow", "x"))
        self.pushButton_6.setText(_translate("MainWindow", "x"))
        self.pushButton_9.setText(_translate("MainWindow", "X"))
        self.pushButton_5.setText(_translate("MainWindow", "x"))
        self.pushButton_1.setText(_translate("MainWindow", "x"))
        self.pushButton_7.setText(_translate("MainWindow", "x"))
        self.pushButton_2.setText(_translate("MainWindow", "x"))
        self.pushButton_8.setToolTip(_translate("MainWindow", "<html><head/><body><p align=\"center\"><br/></p></body></html>"))
        self.pushButton_8.setWhatsThis(_translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:20pt;\">X</span></p></body></html>"))
        self.pushButton_8.setText(_translate("MainWindow", "x"))
        self.pushButton_4.setText(_translate("MainWindow", "x"))
        self.textEdit.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">Ник первого игрока:</span></p></body></html>"))
        self.textEdit_2.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">Ник второго игрока:</span></p></body></html>"))
        self.textEdit_3.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:14px; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">Введитие ник</span></p></body></html>"))
        self.textEdit_4.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:14px; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">Введите ник</span></p></body></html>"))
        self.textEdit_5.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:12px; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">Введите ник первого игрока:</span></p></body></html>"))
        self.textEdit_6.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:12px; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12pt;\">Панель Игры</span></p></body></html>"))

введите сюда описание изображения

→ Ссылка