谁能帮我给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;
}