You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python代码而非HTML修改QLabel文本颜色?

Hey there! I totally get it—trying to change a QLabel's text color without falling back to HTML can be frustrating when the methods you find don't work as expected. Let me share two solid, non-HTML solutions you can copy directly, along with explanations to help you debug and understand how they work.

Method 1: Modify the Widget's Palette

Qt uses QPalette to manage the color scheme of widgets, and we can tweak it to change the text color of your QLabel. Here's the working code:

import sys
from PyQt5 import QtWidgets, QtGui

class Program(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QLabel Color Test")
        
        test = QtWidgets.QLabel(self)
        test.setText("I am trying to make this red?")
        
        # Grab the label's current palette
        palette = test.palette()
        # Set the text color (WindowText role targets widget text)
        palette.setColor(QtGui.QPalette.WindowText, QtGui.QColor(255, 0, 0))
        # Apply the updated palette back to the label
        test.setPalette(palette)
        
        self.show()

app = QtWidgets.QApplication(sys.argv)
tradingApp = Program()
sys.exit(app.exec())

How this works:

Every widget has a built-in QPalette that defines colors for different parts (like background, text, buttons). The WindowText role specifically controls the color of text displayed on a widget's background. We retrieve the label's existing palette, update the WindowText color to red, then apply the modified palette to make the change take effect.

Method 2: Use Qt Style Sheets (QSS)

QSS is Qt's CSS-like styling system, which is another reliable non-HTML way to style widgets. This approach is often more straightforward for simple color changes:

import sys
from PyQt5 import QtWidgets, QtGui

class Program(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QLabel Color Test")
        
        test = QtWidgets.QLabel(self)
        test.setText("I am trying to make this red?")
        
        # Apply a style sheet rule to set text color
        test.setStyleSheet("color: red;")
        
        self.show()

app = QtWidgets.QApplication(sys.argv)
tradingApp = Program()
sys.exit(app.exec())

How this works:

The setStyleSheet method lets you apply CSS-style rules directly to the widget. The color: red; rule sets the text color—you can also use hex codes (e.g., #ff0000) or RGB values (e.g., rgb(255, 0, 0)) if you need specific shades. QSS rules usually take precedence over palette settings, so this is a good fallback if the palette method doesn't work with your system's native widget style.

Why your earlier attempts might have failed:

  • If you tried using QPalette before, you might have forgotten to call setPalette() to apply the modified palette to the label.
  • Some system-native styles override palette changes, which is why the QSS method is often more consistent across different environments.

内容的提问来源于stack exchange,提问作者Carl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:36:49