2017-07-12 3 views
0

J'utilise Qt-Designer pour créer une mainwindow et utilisé des feuilles de style pour faire un changement d'image de bouton lorsqu'il est pressé. Cependant, après l'avoir exécuté, l'image de fond et l'image pressée ne fonctionnent pas.Les feuilles de style dans PyQt5 bakground-image bouton-poussoir le transforme en un bouton-poussoir sans image

C'est l'entrée de feuille de style Qt-Designer:

QPushButton#House1 { 
    border-image: url(:/img/Crystal_Clear_app_kfm_home.png); 
} 
QPushButton#House:pressed { 
    border-image: url(:/img/Search_in_home.png); 
} 

Ceci est mon mainWindow.py:

from PyQt5 import QtCore, QtGui, QtWidgets 
import sys 
import resources_rc 
class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName("MainWindow") 
     MainWindow.resize(811, 600) 
     MainWindow.setStyleSheet("background-color: rgb(211, 211, 211);") 
     self.centralwidget = QtWidgets.QWidget(MainWindow) 
     self.centralwidget.setObjectName("centralwidget") 
     ###################house 1####### 
     self.house2 = QtWidgets.QPushButton(self.centralwidget) 
     self.house1.setGeometry(QtCore.QRect(61, 21, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.house1.sizePolicy().hasHeightForWidth()) 

     self.house1.setSizePolicy(sizePolicy) 
     self.house1.setStyleSheet("#House1 {\n" 
"border-image: url(:/img/Crystal_Clear_app_kfm_home.png);\n" 
"}\n" 
"#House:Pressed {\n" 
" border-image: url(:/img/Search_in_home.png);\n" 
"}") 
     self.house1.setText("") 
     self.house1.setObjectName("house1") 
     ####################end ############# 
     self.house4 = QtWidgets.QPushButton(self.centralwidget) 
     self.house4.setGeometry(QtCore.QRect(61, 203, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.house4.sizePolicy().hasHeightForWidth()) 
     self.house4.setSizePolicy(sizePolicy) 
     self.house4.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.house4.setText("") 
     self.house4.setObjectName("house4") 
     self.house2 = QtWidgets.QPushButton(self.centralwidget) 
     self.house2.setGeometry(QtCore.QRect(293, 21, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.house2.sizePolicy().hasHeightForWidth()) 
     self.house2.setSizePolicy(sizePolicy) 
     self.house2.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.house2.setText("") 
     self.house2.setObjectName("house2") 
     self.house3 = QtWidgets.QPushButton(self.centralwidget) 
     self.house3.setGeometry(QtCore.QRect(524, 21, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.house3.sizePolicy().hasHeightForWidth()) 
     self.house3.setSizePolicy(sizePolicy) 
     self.house3.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.house3.setText("") 
     self.house3.setObjectName("house3") 
     self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget) 
     self.pushButton_8.setGeometry(QtCore.QRect(293, 384, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.pushButton_8.sizePolicy().hasHeightForWidth()) 
     self.pushButton_8.setSizePolicy(sizePolicy) 
     self.pushButton_8.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.pushButton_8.setText("") 
     self.pushButton_8.setObjectName("pushButton_8") 
     self.house5 = QtWidgets.QPushButton(self.centralwidget) 
     self.house5.setGeometry(QtCore.QRect(293, 203, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.house5.sizePolicy().hasHeightForWidth()) 
     self.house5.setSizePolicy(sizePolicy) 
     self.house5.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.house5.setText("") 
     self.house5.setObjectName("house5") 
     self.house6 = QtWidgets.QPushButton(self.centralwidget) 
     self.house6.setGeometry(QtCore.QRect(524, 203, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.house6.sizePolicy().hasHeightForWidth()) 
     self.house6.setSizePolicy(sizePolicy) 
     self.house6.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.house6.setText("") 
     self.house6.setObjectName("house6") 
     self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget) 
     self.pushButton_7.setGeometry(QtCore.QRect(61, 384, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.pushButton_7.sizePolicy().hasHeightForWidth()) 
     self.pushButton_7.setSizePolicy(sizePolicy) 
     self.pushButton_7.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.pushButton_7.setText("") 
     self.pushButton_7.setObjectName("pushButton_7") 
     self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget) 
     self.pushButton_9.setGeometry(QtCore.QRect(524, 384, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.pushButton_9.sizePolicy().hasHeightForWidth()) 
     self.pushButton_9.setSizePolicy(sizePolicy) 
     self.pushButton_9.setStyleSheet("border-image: url(:/img/Crystal_Clear_app_kfm_home.png);") 
     self.pushButton_9.setText("") 
     self.pushButton_9.setObjectName("pushButton_9") 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtWidgets.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 811, 27)) 
     self.menubar.setObjectName("menubar") 
     self.menuFile = QtWidgets.QMenu(self.menubar) 
     self.menuFile.setObjectName("menuFile") 
     self.menuAdmin = QtWidgets.QMenu(self.menubar) 
     self.menuAdmin.setObjectName("menuAdmin") 
     MainWindow.setMenuBar(self.menubar) 
     self.statusbar = QtWidgets.QStatusBar(MainWindow) 
     self.statusbar.setObjectName("statusbar") 
     MainWindow.setStatusBar(self.statusbar) 
     self.actionOpen = QtWidgets.QAction(MainWindow) 
     self.actionOpen.setObjectName("actionOpen") 
     self.actionSave = QtWidgets.QAction(MainWindow) 
     self.actionSave.setObjectName("actionSave") 
     self.actionSave_As = QtWidgets.QAction(MainWindow) 
     self.actionSave_As.setObjectName("actionSave_As") 
     self.actionLogin = QtWidgets.QAction(MainWindow) 
     self.actionLogin.setObjectName("actionLogin") 
     self.actionSign_Up = QtWidgets.QAction(MainWindow) 
     self.actionSign_Up.setObjectName("actionSign_Up") 
     self.menuFile.addAction(self.actionOpen) 
     self.menuFile.addAction(self.actionSave) 
     self.menuFile.addAction(self.actionSave_As) 
     self.menuAdmin.addAction(self.actionLogin) 
     self.menuAdmin.addAction(self.actionSign_Up) 
     self.menubar.addAction(self.menuFile.menuAction()) 
     self.menubar.addAction(self.menuAdmin.menuAction()) 

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

    def retranslateUi(self, MainWindow): 
     _translate = QtCore.QCoreApplication.translate 
     MainWindow.setWindowTitle(_translate("MainWindow", "SWTDI Main Window")) 
     self.menuFile.setTitle(_translate("MainWindow", "File")) 
     self.menuAdmin.setTitle(_translate("MainWindow", "Admin")) 
     self.actionOpen.setText(_translate("MainWindow", "Open")) 
     self.actionSave.setText(_translate("MainWindow", "Save")) 
     self.actionSave_As.setText(_translate("MainWindow", "Save As")) 
     self.actionLogin.setText(_translate("MainWindow", "Login")) 
     self.actionSign_Up.setText(_translate("MainWindow", "Sign Up")) 

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

fichier de ressources:

<!DOCTYPE RCC><RCC version="1.0"> 
<qresource> 
    <file>img/house.png</file> 
    <file>img/house2.png</file> 
    <file>img/NM_State_University_logo.png</file> 
    <file>img/NMlogo_1colorstate_black.png</file> 
    <file>img/NMlogo_1colorstate_red.tif</file> 
    <file>img/Crystal_Clear_app_kfm_home.png</file> 
    <file>img/Gohomenew.png</file> 
    <file>img/Search_in_home.png</file> 
    </qresource> 
</RCC> 

Le bouton a été créé par la ligne j'ai commenté. mais de toute façon J'ai créé un autre bouton avec le code similaire que j'ai vu autour.

###################house 1####### 
     self.house1 = QPushButton(self.centralwidget) 
     #self.house1 = QtWidgets.QPushButton(self.centralwidget) 
     self.house1.setGeometry(QtCore.QRect(61, 21, 32, 19)) 
     sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.house1.sizePolicy().hasHeightForWidth()) 

     self.house1.setSizePolicy(sizePolicy) 
     self.house1.setStyleSheet("#House1 {\n" 
"border-image: url(:/img/Crystal_Clear_app_kfm_home.png);\n" 
"}\n" 
"#House:Pressed {\n" 
" border-image: url(:/img/Search_in_home.png);\n" 
"}") 
     self.house1.setText("") 
     self.house1.setObjectName("house1") 
     ####################end ############# 
+0

S'il vous plaît pouvez-vous afficher le fichier .qrc – eyllanesc

+0

S'il vous plaît [modifier] (https://stackoverflow.com/posts/45068963/edit) votre question et ajoutez-la. – eyllanesc

+0

ok Je viens de l'ajouter –

Répondre

0

Le problème est dû à ne pas utiliser correctement les noms, QStyleSheet utilise la propriété objectName, dans votre cas, le QPushButton self.house1:

self.house1.setObjectName("house1") 

Avant d'écrire que la ligne sur le bouton n'a pas objectName (en fait, son nom d'objet est ""), il n'est donc pas approprié de placer QStyleSheet par objectName.

Ce que vous devez faire est de placer un objectName et ensuite vous pouvez simplement affecter le QStyleSheet filtré par son nom.

self.house1 = QtWidgets.QPushButton(self.centralwidget) 
self.house1.setObjectName("house1") 
self.house1.setStyleSheet("#house1 {\n" 
"border-image: url(:/img/Crystal_Clear_app_kfm_home.png);\n" 
"}\n" 
"#house1:Pressed {\n" 
" border-image: url(:/img/Search_in_home.png);\n" 
"}") 

Cet attribut est sensible à la casse si vous devez placer exactement la même chose que setObjectName().

Pour plus d'informations, vous devriez lire ce qui suit:

+0

eyllanesc, ça marche !! Merci de votre aide. –