Pyqt5 Python3 QPushButton 默认 StrongFocus 颜色或选项卡选择颜色

Posted

技术标签:

【中文标题】Pyqt5 Python3 QPushButton 默认 StrongFocus 颜色或选项卡选择颜色【英文标题】:Pyqt5 Python3 QPushButton default StrongFocus color or tab selected color 【发布时间】:2020-05-05 22:19:23 【问题描述】:

我正在尝试找出一种方法来使用 Python3 在 PyQt5 中更改 QPushButton 的颜色。

我可以设置背景颜色和悬停颜色,但程序保持焦点颜色或

强焦点颜色作为默认颜色。找不到任何关于它的信息,我在我的

中加载了我的 qss 文件 StyleSheet

main.py.

喜欢

QPushButton
    background-color: #9de650;       #works fine



QPushButton:hover
    background-color: green;         #works fine


QPushButton:focus 
    background-color: red;           #doesnt work if the focus color is the color of the button you can
                                    # change using tab to navigate among a list of buttons

QPushButton:strong:focus            #doenst work
    background-color: red; 
    

QPushButton:pressed                 #doesnt work get the tab color
    background-color: green; 
    

我不明白为什么 QPushButton:pressed 不起作用。我刚开始,脚本上的按钮上没有连接或单击功能。我正在使用 Designer,我在 QPushButton 上获得的颜色与我在设计器预览中获得的颜色相同。

如果我将 qss 代码直接保存到设计器中的 ui 文件中,则会出现相同的行为。

在我的按钮列表之间切换时,我可以看到它们在很短的时间内呈现红色

在变成蓝色之前,红色是我选择的焦点颜色。

有什么提示吗?

【问题讨论】:

我测试了您的样式表并且(在删除 cmets 后,应该在 css 中使用 /* comment */ 完成)它可以工作。我不明白你所说的“强焦点”是什么,另外,Qt 没有 :strong 伪状态。 我刚刚在某个地方发现了 strongfocus,他们正在谈论使用 enter 或空格键来按下通过 tabspace 移动突出显示的按钮。在我的情况下,只要我将鼠标悬停在按钮上,按钮就会正常运行,但是可以使用制表符移动的按钮不会获​​得焦点颜色 我相信你混淆了焦点行为(取决于focus policy)和外观:焦点的原因(无论是从标签导航、鼠标点击/滚轮设置还是没有任何具体原因)不会影响它。无论如何,如前所述,我无法重现您的问题:使用您提供的 css,我可以正确地看到按钮变为红色,只要它们具有焦点(使用 tab 键或 在单击它们之后) .你在什么系统上,什么 PyQt 版本?您确定您没有在其他地方使用其他样式表吗? 如何检查其他样式表?或者在加载我的之前最好重置样式表。我怀疑我得到了 Lubuntu 默认的 qss/css。我在 Lubuntu Python 3.7.5,PyQt5 5.12.3 嗯。我以为我在使用微风,所以我没有测试它,但似乎微风风格(这是 Lubuntu 上的默认设置)只是忽略了焦点项目的背景。可以试试 Designer 的其他款式吗?在“表单”菜单中查找“Preview in...”子菜单。 【参考方案1】:

musicmante 回答了我的问题:

正如我所想。如果小部件的 css 定义不完整,Breeze 会覆盖一些颜色和行为;奇怪的是,您说 button:pressed 不起作用,但在我的测试中确实如此。无论如何,Fusion 是通常更好地处理样式表的样式,如果使用它没有问题,您可以使用 app.setStyle(QtWidgets.QStyleFactory.create('Fusion')) 设置应用程序样式。

【讨论】:

以上是关于Pyqt5 Python3 QPushButton 默认 StrongFocus 颜色或选项卡选择颜色的主要内容,如果未能解决你的问题,请参考以下文章

Pyqt5:如何限制QMainWindow中QPushButton的拖动区域?

如何在 PyQt5 中制作自定义 QPushButton?

python pyqt5 按钮 QPushButton

PyQt5:查找点击了哪个 QPushButton

《PyQT5软件开发 - 控件篇》第1章 按钮-1(QPushButton)

PyQt5:可以通过 QPushButton 触发 QAction 功能吗