[编程心得]PyQt中让按钮保持按下状态

近日舍得在开发SuperMemo转换精灵体验版的时候遇到了一个问题,舍得需要左侧一个竖排的工具栏,工具栏中的按钮点下后高亮为蓝色,而且点击后一直保持这种高亮状态.直到另一个按钮按下,把它替换掉为止,就象下面这个效果:

SNAG-0043

在实际使用的时候发现了问题:当鼠标在主窗口的其它位置点击的时候,这个蓝色高亮状态就消失了,舍得尝试了很多种方法,什么信号槽啊,事件啊啥的,一直找不到一个妥善的解决方案,这几乎已经成为舍得心头的一根刺了。

直到今天,在度娘的帮助下,找到了一篇文章《Qt保持状态的Button》,直觉告诉我这个可以解决,马上动手测试,终于把这根刺给干掉了。

下面是解决的方案:

在按钮中应用下面的函数:

        self.scriptBtn.setCheckable(True)
        self.scriptBtn.setAutoExclusive(True)

像舍得上面这幅图中总共5个按钮,需要一一设置。

然后在QSS样式表中设置:

QPushButton::checked,QToolButton::checked{
    background: #3C79F2;
    border-color: #11505C;
    font-weight: bold;
    font-family:"Microsoft YaHei";
}
就完成了舍得预期的效果,每个按钮点中后高亮,直至另一个按钮被点击;鼠标即使在非按钮区点击,高亮效果仍然保留.

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

原文地址:https://www.cnblogs.com/emagic/p/2500984.html