而不是“手动”定义列表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
答案 0 :(得分:1)
这可以通过标准的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
。