Skip to main content
 首页 » 编程设计

python之如何为 PyQt QTabwidget 着色

2025年05月04日11tintown

我有一个包含 QTabWidget 的 PyQt 主窗口。选项卡小部件包含一些按钮和文本框。

我想为整个标签背景着色,而不仅仅是标签栏区域中突出的标签。

我没有使用样式表,而是更喜欢使用调色板,因为我已经在使用调色板,但如果样式表是唯一的选择,那也没关系。

我试过:

p = self.tabWidget.palette() 
p.setColor(self.tabWidget.backgroundRole(), Qt.red) 
self.tabWidget.setPalette(p) 

这会产生一个红色的标签栏区域,但主背景仍然是白色的。

关闭自动填充,使用 self.tabWidget.setAutoFillBackground(False) 略有不同,现在各个选项卡的颜色都很好,但主体仍然是白色。

尝试一些样式表:

self.tabWidget.setStyleSheet("QWidget {background-color: yellow }") 

这会为选项卡的主体着色,但它也会将其他所有内容(包括按钮和文本框)着色为黄色。此外,所有竖起的小标签都是黄色的。自动填充没有任何影响。

关于如何为选项卡主体着色但又不清除其他小部件的任何想法?

我使用的是 PyQt 4.10 版和 Python 2.7。

请您参考如下方法:

使用 StyleSheet,你可以做这样的事情:

stylesheet = """  
    QTabBar::tab:selected {background: gray;} 
    QTabWidget>QWidget>QWidget{background: gray;} 
    """ 
 
self.setStyleSheet(stylesheet) 

人字形允许引用小部件的子项。它告诉 Qt 将样式表应用于应用程序中任何 QTabWidget 的孙子级(参见 Qt StlyleSheet syntax)。选项卡“body”是 QTabWidget 的孙子。

它的渲染效果不是很好,您必须调整一些设置。请参阅关于 Customizing QTabWidget and QTabBar 的 Qt 文档.