与“手动”定义列表groups和roles (在下面的代码中)不同,我如何查询PyQt/PySide应用程序中的这些值?
from PyQt4 import QtGui
groups = ['Disabled', 'Active', 'Inactive', 'Normal']
roles = [
'AlternateBase',
'Background',
'Base',
'Button',
'ButtonText',
'BrightText',
'Dark',
'Foreground',
'Highlight',
'HighlightedText',
'Light',
'Link',
'LinkVisited',
'Mid',
'Midlight',
'Shadow',
'ToolTipBase',
'ToolTipText',
'Text',
'Window',
'WindowText'
]
def getPaletteInfo():
palette = QtGui.QApplication.palette()
#build a dict with all the colors
result = {}
for role in roles:
print role
for group in groups:
qGrp = getattr(QtGui.QPalette, group)
qRl = getattr(QtGui.QPalette, role)
result['%s:%s' % (role, group)] = palette.color(qGrp, qRl).rgba()
return result发布于 2015-03-11 20:05:39
这可以通过标准python内省技术来完成:
for name in dir(QtGui.QPalette):
if isinstance(getattr(QtGui.QPalette, name), QtGui.QPalette.ColorGroup):
print(name)QtGui.QPalette.ColorRole也可以这样做。
但请注意,这将产生一些额外的项目,您可能并不期待。有NColorGroups和NColorRoles。给出每个枚举中的项目数;有几个同义词,如Window/Background;还有一两个同义词,如All和NoRole。
https://stackoverflow.com/questions/28981728
复制相似问题