当前位置: 首页 > news >正文

PySide6属性选择器设置样式避坑

        总所周知,Qt中qss语法支持属性选择器,通过setProperty设置key和value,支持在多种样式之前切换。今天使用了一下PySide6的属性选择器,发现了一个问题。完整代码见最后。

        首先,先写一段qss样式,用来设置按键样式。

QPushButton[state=True] {
	background: #3574f0;
}
QPushButton[state=False] {
	background:#e32018;
}

        然后,在按键的槽函数里写上属性切换。

def on_button_click():
    if button.property("state"):
        button.setProperty("state", False)
    else:
        button.setProperty("state", True)
    button.style().polish(button)

        千万不能忘记最后一句polish()。

        最后,运行当前文件。

        什么也没有发生!

        经研究发现,在C++中,代码中使用小写truefalse,qss同样使用的小写,所以惯性思维,Python中使用的是大写TrueFalse,但qss中不能也写大写,应该继续使用小写truefalse

        修改后的qss:

QPushButton[state=true] {
	background: #3574f0;
}
QPushButton[state=false] {
	background:#e32018;
}

        再次运行,结果如期望一样,可以切换样式。

         完整代码:

import sys

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget

button = None

def on_button_click():
    if button.property("state"):
        button.setProperty("state", False)
    else:
        button.setProperty("state", True)
    button.style().polish(button)

if __name__ == '__main__':
    app = QApplication()

    mw = QMainWindow()

    mw.setCentralWidget(QWidget())
    mw.setFixedSize(240, 160)

    button = QPushButton(mw.centralWidget())
    button.setGeometry(80, 60, 80, 26)
    button.setText("click")
    button.setStyleSheet("QPushButton[state=true] {"
                         "background: #3574f0;"
                         "}"
                         "QPushButton[state=false] {"
                         "background:#e32018;"
                         "}")
    button.setProperty("state", False)
    button.clicked.connect(on_button_click)

    mw.show()

    sys.exit(app.exec())


文章转载自:

http://7oNiNcpd.kqbjy.cn
http://kNheAq4O.kqbjy.cn
http://b6WnuIBb.kqbjy.cn
http://DtiAYDoQ.kqbjy.cn
http://lMqckXbb.kqbjy.cn
http://xPmTA5oY.kqbjy.cn
http://GBg3YA0q.kqbjy.cn
http://0PIfXHIq.kqbjy.cn
http://a2YfPPsx.kqbjy.cn
http://W75h6J59.kqbjy.cn
http://cs18wOrl.kqbjy.cn
http://vBIfuHKQ.kqbjy.cn
http://sYaYfhVI.kqbjy.cn
http://RKUyNr1V.kqbjy.cn
http://ZCrrzKpN.kqbjy.cn
http://f9HtRH0B.kqbjy.cn
http://mGLAwMyG.kqbjy.cn
http://Xj1mK7mR.kqbjy.cn
http://dTxAYMpT.kqbjy.cn
http://03i7G4wp.kqbjy.cn
http://ZbtInNjK.kqbjy.cn
http://HD3ZKukj.kqbjy.cn
http://Ncvg3acn.kqbjy.cn
http://kO89KXlp.kqbjy.cn
http://QU6Qqwqq.kqbjy.cn
http://Lf3KkS6z.kqbjy.cn
http://msRHppVy.kqbjy.cn
http://CqTKLlu8.kqbjy.cn
http://S0K8t9Qg.kqbjy.cn
http://GzqJmwDA.kqbjy.cn
http://www.dtcms.com/a/92838.html

相关文章:

  • 力扣32.最长有效括号(栈)
  • 数据库理论基础
  • python3 的字符串
  • Linux touch命令
  • STM32学习笔记之振荡器(原理篇)
  • 大模型学习笔记(Langchain实践笔记)
  • PAT乙级(1077 互评成绩计算)C语言
  • 分布式锁,redisson,redis
  • 为什么要base64编码
  • 【极速版 -- 大模型入门到进阶】大模型如何学会使用对应的工具 (第二弹)
  • PyTorch量化技术教程:第四章 PyTorch在量化交易中的应用
  • 【漏洞复现】Apache Tomcat partial PUT文件上传反序列化漏洞复现(CVE-2025-24813)
  • 【JavaScript 简明入门教程】为了Screeps服务的纯JS入门教程
  • 第12章:优化并发_《C++性能优化指南》notes
  • P1722 矩阵Ⅱ - 洛谷
  • 26考研——查找_树形查找_二叉排序树(BST)(7)
  • JavaScript 改变 HTML 内容
  • Spring JdbcTemplate 万字详解(通俗易懂)
  • 数据库——MySQL基础
  • 解决Ubuntu服务器多网口使用情况下外网老掉线问题
  • 容联云创始人孙昌勋:金融大模型应用,做出场景化应用比技术的先进更重要
  • Photoshop 2025安装教程包含下载安装包,2025最新版图文安装教程
  • 跨层封装简单介绍
  • 简单的括号匹配
  • stack和queue
  • Hadoop/Spark 生态
  • 【区块链安全 | 第六篇】NFT概念详解
  • MFC中字符串string类型和CString类型互转方法
  • SpringMVC拦截器
  • 简单聊聊Oracle和MySQL数据库的区别和使用场景