当前位置: 首页 > 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())

相关文章:

  • 力扣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服务器多网口使用情况下外网老掉线问题
  • 水泵行业网站怎么做/网站收录查询爱站
  • 郑州做网站企业汉狮/旺道seo优化软件怎么用
  • wordpress分类链接失效/网站关键词优化排名外包
  • 用html制作个人网站源代码/深圳网络营销信息推荐
  • wordpress主机安装/网站推广seo设置
  • 吉林省科瑞建设项目管理有限公司网站/2021最新免费的推广引流软件