如何修改PyQt中QTabWidget的内容背景颜色为黑色?
问题描述
我试图将QTabWidget的内容背景设置为黑色,以与图表风格保持一致,但尝试了设置布局背景颜色、创建父部件填充黑色等方法后均未成功,查阅PyQt官方文档也未找到有用的解决办法。
以下是我的实现代码:
self.tabBoard = QTabWidget() self.tabBoard.setMovable(True) self.tabBoard.setSizePolicy( QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding ) # 绘制示例数据 plot = pg.PlotWidget() plot.plot(range(0, 20), [3, 4, 2, 4, 7, 3, 4, 2, 4, 7, 3, 4, 2, 4, 7, 3, 4, 2, 4, 7]) plot.setAspectLocked(lock = True, ratio = 1) tabPlotContainer = QVBoxLayout(self.tabBoard) tabPlotContainer.setContentsMargins(5, 5, 5, 5) tabPlotContainer.addWidget(plot) # 表格部分 tabTable = QWidget() tableWidget = QTableWidget(5, 2) tableWidget.setHorizontalHeaderLabels(['column1', 'column2']) tableWidget.horizontalHeader().setStretchLastSection(True) tab1hbox = QHBoxLayout() tab1hbox.setContentsMargins(5, 5, 5, 5) tab1hbox.addWidget(tableWidget) tabTable.setLayout(tab1hbox) tabSimple = QWidget() tabSimple.setLayout(tabPlotContainer) self.tabBoard.addTab(tabSimple, "Plot") self.tabBoard.addTab(tabTable, "Table")
当前效果:
期望效果:
解决方法
核心原因
QTabWidget的Tab页面(QWidget)默认继承系统样式的背景,直接设置布局或父部件背景无法覆盖这个样式。
方法1:单独设置每个Tab页面的背景
给每个Tab对应的QWidget添加样式表:
# 给Plot页面设置黑色背景 tabSimple.setStyleSheet("background-color: black;") # 给Table页面设置黑色背景 tabTable.setStyleSheet("background-color: black;")
方法2:全局设置QTabWidget的页面样式
如果所有Tab页面都需要黑色背景,直接给QTabWidget设置样式表,统一指定页面背景:
self.tabBoard.setStyleSheet("QWidget::tab-page { background-color: black; }")
额外适配(表格部件)
如果表格需要适配黑色背景,需单独设置表格的样式,保证文字和表头可见:
tableWidget.setStyleSheet(""" QTableWidget { background-color: black; color: white; gridline-color: #555; } QHeaderView::section { background-color: #333; color: white; border: 1px solid #555; } """)
补充:PyQtGraph图表背景
若PlotWidget背景未自动适配,可手动设置:
plot.setBackground('black')
内容的提问来源于stack exchange,提问作者beatle
相关产品推荐
相关产品推荐

