PyQt5 bakgroundimage按钮中的样式表将其转换为noimage按钮

2024-04-19 21:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用qtdesigner创建一个主窗口,并使用样式表在按下时生成一个按钮changeimage。但是运行后,背景图像和按下的图像不起作用。在

这是来自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);
}

这是我的主窗口.py公司名称:

^{pr2}$

资源文件:

<!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>

按钮是由我注释掉的行创建的。但无论如何 我用我见过的类似代码创建了另一个按钮。在

###################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 #############

Tags: imageselfurlhomeimgpng按钮file
1条回答
网友
1楼 · 发布于 2024-04-19 21:32:21

问题是由于没有正确使用名称造成的,QStyleSheet使用objectName属性,在您的例子中是QPushButton自住房1公司名称:

self.house1.setObjectName("house1")

在写入该行之前,按钮没有objectName(实际上它的objectName是“”),因此不适合按objectName放置QStyleSheet。在

您应该做的是放置一个objectName,然后您就可以根据它的名称来分配过滤后的QStyleSheet。在

^{pr2}$

此属性区分大小写,因此必须与setObjectName()完全相同。在

如需了解更多信息,请阅读以下内容:

相关问题 更多 >