Как установить фон кнопка отличный от родительского фона

Кнопка

Почему кнопка наследует цвет заднего фона?

Как сделать так, чтобы кнопка имела такой фон, который укажу я?

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(400, 531)
        MainWindow.setStyleSheet("background-color: #22222e")
        MainWindow.setAnimated(True)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("background-image: url(:/Fone/5myPN2ppKpA.jpg);")
        self.centralwidget.setObjectName("centralwidget")
        self.weapon = QtWidgets.QPushButton(self.centralwidget)
        self.weapon.setGeometry(QtCore.QRect(140, 480, 111, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.weapon.sizePolicy().hasHeightForWidth())
        self.weapon.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Copperplate Gothic Bold")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.weapon.setFont(font)
        self.weapon.setStyleSheet("QPushButton {\n"
"color: white;\n"
"border: 2px solid #747a06;\n"
"}")
        self.weapon.setInputMethodHints(QtCore.Qt.ImhNone)
        self.weapon.setAutoExclusive(False)
        self.weapon.setObjectName("weapon")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 400, 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", "MainWindow"))
        self.weapon.setText(_translate("MainWindow", "Weapons"))
import ApexFone_rc


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

central widget


Update

Вот указал, .QWidget (на центральный виджет), но в самой программе не отобразился задний фон, он отображается если только запустить демонстрацию программы.

ui файл

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>531</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <property name="styleSheet">
   <string notr="true">background-color: #22222e</string>
  </property>
  <property name="animated">
   <bool>true</bool>
  </property>
  <widget class="QWidget" name="centralwidget">
   <property name="styleSheet">
    <string notr="true">background-image: url(:/Fone/5myPN2ppKpA.jpg);</string>
   </property>
   <widget class="QPushButton" name="weapon">
    <property name="geometry">
     <rect>
      <x>140</x>
      <y>480</y>
      <width>111</width>
      <height>31</height>
     </rect>
    </property>
    <property name="sizePolicy">
     <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
      <horstretch>0</horstretch>
      <verstretch>0</verstretch>
     </sizepolicy>
    </property>
    <property name="font">
     <font>
      <family>Copperplate Gothic Bold</family>
      <pointsize>12</pointsize>
      <weight>50</weight>
      <bold>false</bold>
     </font>
    </property>
    <property name="styleSheet">
     <string notr="true">QPushButton {
color: white;
border: 2px solid #747a06;
}</string>
    </property>
    <property name="inputMethodHints">
     <set>Qt::ImhNone</set>
    </property>
    <property name="text">
     <string>Weapons</string>
    </property>
    <property name="autoExclusive">
     <bool>false</bool>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>400</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources>
  <include location="../our/ApexFone.qrc"/>
 </resources>
 <connections/>
</ui>

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

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

Укажите что background-image относится только к классу QWidget:

self.centralwidget.setStyleSheet(".QWidget {background-image: url(lena.jpg);}")

обратите внимание на . перед QWidget

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(400, 531)
        MainWindow.setStyleSheet("background-color: #22222e")
        MainWindow.setAnimated(True)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        
#        self.centralwidget.setStyleSheet("background-image: url(:/Fone/5myPN2ppKpA.jpg);")
        self.centralwidget.setStyleSheet(".QWidget {background-image: url(lena.jpg);}")
#                                         ^^^^^^^^ 

        self.centralwidget.setObjectName("centralwidget")
        self.weapon = QtWidgets.QPushButton(self.centralwidget)
        self.weapon.setGeometry(QtCore.QRect(140, 480, 111, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.weapon.sizePolicy().hasHeightForWidth())
        self.weapon.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Copperplate Gothic Bold")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.weapon.setFont(font)
        self.weapon.setStyleSheet("QPushButton {\n"
"color: white;\n"
"background-color: blue;\n"                                    # /* <---- */
"border: 2px solid #747a06;\n"
"}")
        self.weapon.setInputMethodHints(QtCore.Qt.ImhNone)
        self.weapon.setAutoExclusive(False)
        self.weapon.setObjectName("weapon")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 400, 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", "MainWindow"))
        self.weapon.setText(_translate("MainWindow", "Weapons"))
#import ApexFone_rc


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

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



Update

Я добавил новый скрин шот, посмотрите, задний фон не отображается, пока не запустить программу

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

→ Ссылка