我正在使用GUI,我使用Python与PyQt4的模块,其中一个项目。
这里是我的演示代码:
import sys
from PyQt4 import QtGui, QtCore
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setWindowTitle('PyQt4 demo')
self.setGeometry(50, 50, 1000, 1000)
self.createTabs()
self.styleTabs()
self.show()
def createTabs(self):
'''Creates a QTabWidget with 5 tabs,
named 1, 2, 3, 4, 5
'''
self.tabs = QtGui.QTabWidget(self)
self.tabs.resize(1000, 1000)
contents1 = QtGui.QWidget()
contents2 = QtGui.QWidget()
contents3 = QtGui.QWidget()
contents4 = QtGui.QWidget()
contents5 = QtGui.QWidget()
self.tabs.addTab(contents1, '1')
self.tabs.addTab(contents2, '2')
self.tabs.addTab(contents3, '3')
self.tabs.addTab(contents4, '4')
self.tabs.addTab(contents5, '5')
def styleTabs(self):
#Would like to add some code here which colors
#each tab with a different color.
pass
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
大多数对象(包括QtabWidget和QTabBar)使用.setStyleSheet(STR)方法支持CSS样式。 但有了这个,我只能做到着色所有选项卡具有相同的颜色。 我还发现了一种颜色选择,第一,最后一个选项卡,但永远无法达到着色选项卡为前:为2的指数。
例如:
self.tabs.setStyleSheet('''
QTabBar::tab {background-color: green;}
QTabBar::tab:selected {background-color: red;}
QTabBar::tab:first {background-color: red;}
QTabBar::tab:last {background-color: red;}
''')
我也试着将颜色当前QTabBar。 这适用于Qt的,但不能与PyQt的明显:
tab = self.tabs.tabBar()
tab.setStyleSheet('background-color: grey;')
在PyQt4的着色方法没有工作之一:
plt = QtGui.QPalette()
clr = QtGui.QColor()
clr.setRgb(100, 100, 100)
plt.setColor(10, clr)
tab.setPalette(plt)
我一直在寻找网络上很多,但还没有找到这个问题的任何解决方案。 在这一点上,我甚至不能确定一个简单的解决方案存在。
是否有修改PyQt4的源代码的方式,因此可以应用上述技术中的一种?
附加信息:
Python版本3.4
PyQt的版本4.12