首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PyQt/PySide中获取QPalette的组和角色?

如何在PyQt/PySide中获取QPalette的组和角色?
EN

Stack Overflow用户
提问于 2015-03-11 08:32:08
回答 1查看 362关注 0票数 1

与“手动”定义列表groupsroles (在下面的代码中)不同,我如何查询PyQt/PySide应用程序中的这些值?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-11 20:05:39

这可以通过标准python内省技术来完成:

代码语言:javascript
复制
for name in dir(QtGui.QPalette):
    if isinstance(getattr(QtGui.QPalette, name), QtGui.QPalette.ColorGroup):
        print(name)

QtGui.QPalette.ColorRole也可以这样做。

但请注意,这将产生一些额外的项目,您可能并不期待。有NColorGroupsNColorRoles。给出每个枚举中的项目数;有几个同义词,如Window/Background;还有一两个同义词,如AllNoRole

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28981728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档