Как установить фон кнопка отличный от родительского фона
Почему кнопка наследует цвет заднего фона?
Как сделать так, чтобы кнопка имела такой фон, который укажу я?
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_())
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
Я добавил новый скрин шот, посмотрите, задний фон не отображается, пока не запустить программу


