Ejemplo n.º 1
0
    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        self.setAttribute(Qt.WA_StyledBackground, True)

        setting = QSettings('gradient.ini', QSettings.IniFormat)
        setting.setIniCodec('UTF-8')

        gradient = setting.value('gradient')
        print(gradient)
        if gradient:
            gradient = GradientUtils.toGradient(gradient)
            print(gradient)
            gradient = GradientUtils.styleSheetCode(gradient)
            print(gradient)
            self.setStyleSheet('background: {};'.format(gradient))

        gradient = QLinearGradient(0, 0, 1, 1)
        gradient.setColorAt(0, Qt.red)
        gradient.setColorAt(0.5, Qt.green)
        gradient.setColorAt(1, Qt.blue)

        gradient = GradientUtils.toJson(gradient)
        print(gradient)
        setting.setValue('gradient', gradient)
        setting.sync()
Ejemplo n.º 2
0
    def loadColourfulTheme(cls, color, widget=None, replaces={}):
        """基于当前设置主题颜色
        :param cls:
        :param color:        背景颜色
        :param widget:        指定控件
        """
        # 加载主题取样式
        path = cls.stylePath('Default')
        AppLog.info('stylePath: {}'.format(path))
        try:
            styleSheet = open(path, 'rb').read().decode(
                'utf-8', errors='ignore')
            # 需要替换部分样式
            colorstr = GradientUtils.styleSheetCode(color)
            if isinstance(color, QLinearGradient) or isinstance(color, QRadialGradient) or isinstance(color, QConicalGradient):
                color = color.stops()[0][1]
            # 替换name
            templates = StyleGradientTemplate
            for name, value in replaces.items():
                templates = templates.replace(name, value)

            styleSheet += templates.format(
                color.red(), color.green(), color.blue(), colorstr)
            widget = widget or QApplication.instance()
            widget.setStyleSheet(styleSheet)
        except Exception as e:
            AppLog.exception(e)
Ejemplo n.º 3
0
 def _initStyle(self):
     colourful = Setting.value('colourful')
     if colourful:
         ThemeManager.loadFont()
         if isinstance(colourful, QColor):
             ThemeManager.loadColourfulTheme(colourful)
         else:
             # json数据转渐变
             ThemeManager.loadColourfulTheme(
                 GradientUtils.toGradient(colourful))
     else:
         ThemeManager.loadTheme()
Ejemplo n.º 4
0
 def on_buttonPreviewApply_clicked(self):
     """设置主题
     """
     if self._which == self.Theme:
         ThemeManager.loadUserTheme(
             os.path.basename(os.path.dirname(self._poc)))
         Setting.setValue('picture', None)
         Setting.setValue('colourful', None)
     elif self._which == self.Color:
         ThemeManager.loadColourfulTheme(self._poc)
         if isinstance(self._poc, QColor):
             Setting.setValue('colourful', self._poc)
         else:
             # 渐变需要转成字典数据
             Setting.setValue('colourful', GradientUtils.toJson(self._poc))
         Setting.setValue('picture', None)
Ejemplo n.º 5
0
 def _initUi(self):
     """初始UI"""
     self.setupUi(self)
     # 隐藏还原按钮
     self.buttonNormal.setVisible(False)
     # 隐藏目录树的滑动条
     self.treeViewCatalogs.verticalScrollBar().setVisible(False)
     # 加载鼠标样式
     ThemeManager.loadCursor(self.widgetMain)
     ThemeManager.setPointerCursors([
         self.buttonHead,            # 主界面头像
         self.buttonClear,           # 主界面清空按钮
         self.buttonGithub,          # Github按钮
         self.buttonQQ,              # QQ按钮
         self.buttonGroup,           # 群按钮
         self.buttonBackToUp,        # 返回顶部按钮
         self.buttonHome             # 显示主页readme
     ])
     # 安装事件过滤器用于还原鼠标样式
     self.widgetMain.installEventFilter(self)
     # 绑定返回顶部提示框
     ToolTip.bind(self.buttonBackToUp)
     ToolTip.bind(self.buttonHome)
     # 头像提示控件
     ToolTip.bind(self.buttonHead)
     # 加载主题
     colourful = Setting.value('colourful')
     picture = Setting.value('picture', '', str)
     AppLog.debug('colourful: %s', str(colourful))
     AppLog.debug('picture: %s', picture)
     if picture:
         ThemeManager.loadFont()
         ThemeManager.loadPictureTheme(picture)
     elif colourful:
         ThemeManager.loadFont()
         if isinstance(picture, QColor):
             ThemeManager.loadColourfulTheme(colourful)
         else:
             # json数据转渐变
             ThemeManager.loadColourfulTheme(
                 GradientUtils.toGradient(colourful))
     else:
         ThemeManager.loadTheme()
Ejemplo n.º 6
0
    QColor

from Utils.GradientUtils import GradientUtils

__Author__ = 'Irony'
__Copyright__ = 'Copyright (c) 2019'

# 线性渐变
linearGradient = QLinearGradient(0, 0, 1, 1)
linearGradient.setColorAt(0.0, Qt.green)
linearGradient.setColorAt(0.2, Qt.white)
linearGradient.setColorAt(0.4, Qt.blue)
linearGradient.setColorAt(0.6, Qt.red)
linearGradient.setColorAt(1.0, Qt.yellow)

print(GradientUtils.styleSheetCode(linearGradient))

# 辐射渐变
radialGradient = QRadialGradient(0, 0, 1, 1, 110)
radialGradient.setColorAt(0, Qt.green)
radialGradient.setColorAt(0.4, Qt.blue)
radialGradient.setColorAt(1.0, Qt.yellow)

print(GradientUtils.styleSheetCode(radialGradient))

# 弧度渐变
conicalGradient = QConicalGradient(0.5, 0.5, 0)
conicalGradient.setAngle(0.5)
conicalGradient.setColorAt(0, Qt.green)
conicalGradient.setColorAt(0.2, Qt.white)
conicalGradient.setColorAt(0.4, Qt.blue)