如何在不禁用标签的情况下使标签变灰?

时间:2017-07-28 14:13:51

标签: qt pyqt5

我有一些标签,我希望有时看起来是灰色的,这取决于一些变量。其中一些标签在点击时会产生影响(例如更改这些因素)。无论用户使用什么主题,我都希望自己的程序看起来不错,所以我无法对颜色进行硬编码。我怎么能这样做?

我可以想到几种解决方案,但它们都有一些令人讨厌的缺点:

  • 更改文字颜色:这听起来是最简单的解决方案,但由于我想支持主题/调色板,因此有点困难。特别是如果在程序运行时更改系统主题,那么我必须再次更新调色板。

  • 致电setDisabled()并覆盖event这只是感觉错误,并且还有可能会覆盖平台行为。

  • 创建一个自定义文本小部件:当然可以,但它需要批次代码重复和浪费时间,或者是相当一半,有限的实施。

  • 通过一对paintEvent来电话包裹setDisabled() 号码。不。另外,我不知道这是否适用于并发。

2 个答案:

答案 0 :(得分:0)

您可以设置此标签的样式表,因为它是一个Widget。它适用于我,当主题因操作系统切换或其他原因而改变时,它保持不变。

label.setStyleSheet("color: gray")

样式表有CSS语法。你可以用它制作精彩的东西,只需查看reference properties和一些examples就可以看到一些不同的小部件。

答案 1 :(得分:0)

从"已禁用"复制画笔。调色板的作用是" Active"作用:

palette = mylabel.palette()
palette.setCurrentColorGroup(QtGui.QPalette.Disabled)
palette.setColorGroup(QtGui.QPalette.Normal, palette.windowText(),
    palette.button(), palette.light(), palette.dark(), palette.mid(),
    palette.text(), palette.brightText(), palette.base(), palette.window())
mylabel.setPalette(palette)

mylabel现在应该看起来已经被禁用了,但事实上并非如此。

这适用于任何小部件,而不仅仅是标签。