如何在 PyQt/PySide 中获取 QPalette 的组和角色?
How to get groups and roles of a QPalette in PyQt/PySide?
而不是 "manually" 定义列表 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
这可以通过标准 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
.
而不是 "manually" 定义列表 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
这可以通过标准 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
.