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

QMessageBox背景与文本颜色设置问题求助

解决QMessageBox黑底白字样式问题

嘿,刚好碰到过类似的坑,我来帮你搞定!

你之前的问题出在两个地方:一是用了错误的样式属性text-color,Qt样式表里控制文本颜色的是color;二是QMessageBox是复合控件,直接设置样式不会自动作用到内部的文本标签上,得指定子控件选择器。

直接给你能用的代码,修改后的样式表可以完美实现黑底白字效果,我还顺便优化了按钮的样式(不然默认按钮在黑背景下会很突兀):

from PyQt5.QtWidgets import QMessageBox
from PyQt5 import QtGui

msg = QMessageBox()
msg.setText("Message has been sended")
msg.setWindowTitle("SENT")
msg.setWindowIcon(QtGui.QIcon("black tic.png"))
msg.setIcon(QMessageBox.Information)  # 补全你代码里没写完的图标类型

# 关键的样式表设置
msg.setStyleSheet("""
    QMessageBox {
        background-color: rgb(0, 0, 0);
    }
    QMessageBox QLabel {
        color: rgb(255, 255, 255);
    }
    QMessageBox QPushButton {
        color: rgb(255, 255, 255);
        background-color: rgb(50, 50, 50);
        border-radius: 4px;
        padding: 5px 12px;
    }
    QMessageBox QPushButton:hover {
        background-color: rgb(70, 70, 70);
    }
""")

msg.exec_()

简单解释下:

  • QMessageBox选择器:设置整个对话框的背景为黑色。
  • QMessageBox QLabel选择器:指定对话框内所有QLabel(包括你设置的提示文本、图标旁边的说明)的文字颜色为白色,这就是你要的白字效果。
  • 按钮样式是额外优化的,如果不需要可以删掉,只保留前两个选择器就行。

如果想要更精简的写法,也可以这样:

msg.setStyleSheet("QMessageBox {background-color: black;} QMessageBox QLabel {color: white;}")

这样就能完美实现你要的黑底白字效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:00:31