Pyside6 qss文件如何指定单个控件改变样式

Pyside6 qss文件如何指定单个控件改变样式

问题描述:

我使用pyside6写了一个test,但是发现qss全局样式可以生效,但是指定的一个名叫 button_3 的控件改变样式没有生效。
下面是我的 .py 和 .qss 文件代码

import sys

from PySide6.QtWidgets import (QApplication, QVBoxLayout, QWidget, QPushButton, QGridLayout, QLabel)
from PySide6 import QtCore

class Form(QWidget):
    def __init__(self):
        super(Form,self).__init__()

        self.layout = QVBoxLayout()
        
        self.button_1 = QPushButton("test_1")
        self.button_2 = QPushButton("test_2")
        self.button_3 = QPushButton("test_2")

        self.layout.addWidget(self.button_1)
        self.layout.addWidget(self.button_2)
        self.layout.addWidget(self.button_3)

        self.setLayout(self.layout)

        with open("./style/button.qss", "r") as f:
            _style = f.read()
            self.setStyleSheet(_style)


if __name__ == "__main__":
    app = QApplication([])

    myForm = Form()
    # Calculator.resize(800, 600)
    myForm.show()

    sys.exit(app.exec())
QPushButton {
    background-color: red;
    min-width: 3em;
    border-style: outset;
    border-width: 2px;
}

QPushButton#button_3 {
    background: yellow;
    min-width: 6em;
    min-height: 2em;
}

运行代码后,程序像这样

img

我在 qss 文件中定义了 button_3 和全局不同的样式,全局样式好像生效了,但是 button_3 为什么没有任何效果?

也可能是我 setStyleSheet 写得有问题,如果有问题,希望帮助我指出错误,谢谢!

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。