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
相关产品推荐
相关产品推荐

