如何在QTabWidget内放置一个选项卡的背景颜色



谁能帮我给QTabWidget里面的标签上色?我知道有很多关于它的问题,但我觉得没有一个对我有帮助。我挣扎的原因是我有QTabWidget比;有两个标签"一个"one_answers";two"比;TAB " TAB "里面还有一个TAB "被称为"test"我想在一个名为"one"的标签上添加颜色。我知道这样读有点让人困惑,但我希望你能从代码中更好地理解。下面是一个代码:

import sys
from PyQt5 import QtWidgets

class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.tabs = QtWidgets.QTabWidget(self)
self.setWindowTitle('PyQt4 demo')
self.setGeometry(500, 500, 500, 500)
self.createTabs()
self.show()
def createTabs(self):
self.tabs.resize(1000, 1000)
contents1 = QtWidgets.QWidget()
contents2 = QtWidgets.QWidget()
contents1.layout = QtWidgets.QVBoxLayout()
contents1.setLayout(contents1.layout)
self.tabs.addTab(contents1, 'one')
contents1.setStyleSheet('QTabBar::tab {background-color: red;}')
self.tabs.addTab(contents2, 'two')
extra_tab_widget = QtWidgets.QTabWidget()
extra_tab = QtWidgets.QWidget()
extra_tab_widget.addTab(extra_tab, 'test')
contents1.layout.addWidget(extra_tab_widget)

def run():
app = QtWidgets.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())

run()

我试着给contents1赋予颜色,但是它给标签里面的标签赋予了颜色这个标签叫做"test"而不是在标签上写上"一"。我试着把setStyleSheets涂在QTabWidget上,但它会给所有东西上色。有人知道一个解决方案,希望使用setStyleSheet?谢谢!

我喜欢使用外部文件设置样式。然后使用setQss()函数应用样式。在自定义- qtabwidgets -and-qtabbar中…您可以找到样式示例。为了方便该活动,您可以使用setObjectName()

import sys
from PyQt5 import QtWidgets, QtCore
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.tabs = QtWidgets.QTabWidget(self)
self.tabs.setObjectName('tab_1')
self.setWindowTitle('PyQt4 demo')
self.setGeometry(500, 500, 500, 500)
self.createTabs()
self.show()
def createTabs(self):
self.tabs.resize(1000, 1000)
contents1 = QtWidgets.QWidget()
contents1.setObjectName('cont_1')
contents2 = QtWidgets.QWidget()
contents2.setObjectName('cont_2')
contents1.layout = QtWidgets.QVBoxLayout()
contents1.setLayout(contents1.layout)
self.tabs.addTab(contents1, 'one')
#contents1.setStyleSheet('QTabBar::tab {background-color: red;}')
self.tabs.addTab(contents2, 'two')
extra_tab_widget = QtWidgets.QTabWidget()
extra_tab = QtWidgets.QWidget()
extra_tab_widget.addTab(extra_tab, 'test')
contents1.layout.addWidget(extra_tab_widget)
def setQss(_app, _qss):
File = QtCore.QFile(_qss)
if not File.open( QtCore.QFile.ReadOnly | QtCore.QFile.Text):
return
qss = QtCore.QTextStream(File)
_app.setStyleSheet(qss.readAll())

def run():
app = QtWidgets.QApplication(sys.argv)
setQss(app, "style.qss")
GUI = Window()
sys.exit(app.exec_())
run()

风格。工作频率文件:

#tab_1 QTabBar::tab {
background-color: yellow;       
}
#tab_1 QTabBar::tab:selected{
background-color: black;    
}
#cont_1 QTabBar::tab {
background-color: red;
}
#cont_1 QTabBar::tab:selected{
background-color: pink; 
}
#cont_1{
background-color: green;
}
#cont_2{
background-color: blue;
}

相关内容

最新更新