From 73a12ec19dcf22589eed4d69f8722c7e98a2e1a5 Mon Sep 17 00:00:00 2001 From: Irony <892768447@qq.com> Date: Thu, 8 Mar 2018 13:23:17 +0800 Subject: [PATCH] Change Material Style To https://github.com/892768447/QMaterial --- .gitignore | 2 + .settings/org.eclipse.core.resources.prefs | 10 +- README.md | 2 +- 界面美化/Material/Effect/LineEffect.py | 95 --- 界面美化/Material/Effect/__init__.py | 0 界面美化/Material/README.md | 5 - 界面美化/Material/ScreenShot/LineEdit.gif | Bin 88699 -> 0 bytes 界面美化/Material/Utils/Colors.py | 618 -------------------- 界面美化/Material/Utils/MaterialProperty.py | 363 ------------ 界面美化/Material/Utils/__init__.py | 0 界面美化/Material/Widget/LineEdit.py | 63 -- 界面美化/Material/test/TestLineEdit.py | 43 -- 12 files changed, 8 insertions(+), 1193 deletions(-) delete mode 100644 界面美化/Material/Effect/LineEffect.py delete mode 100644 界面美化/Material/Effect/__init__.py delete mode 100644 界面美化/Material/README.md delete mode 100644 界面美化/Material/ScreenShot/LineEdit.gif delete mode 100644 界面美化/Material/Utils/Colors.py delete mode 100644 界面美化/Material/Utils/MaterialProperty.py delete mode 100644 界面美化/Material/Utils/__init__.py delete mode 100644 界面美化/Material/Widget/LineEdit.py delete mode 100644 界面美化/Material/test/TestLineEdit.py diff --git a/.gitignore b/.gitignore index 733ea50..8fac45b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ /tmp/ /tmp/* +/tmp/Material +/tmp/Material/* *.pyc .setting .setting/ diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 9688e9b..fe8f503 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -9,6 +9,11 @@ encoding//PyQtChart\u7EC3\u4E60/test/ToolTip.py=utf-8 encoding//PyQtChart\u7EC3\u4E60/test/ToolTip2.py=utf-8 encoding//QGraphicsView\u7EC3\u4E60/\u4E16\u754C\u5730\u56FE/WorldMap.py=utf-8 encoding//QGraphicsView\u7EC3\u4E60/\u6DFB\u52A0QWidget.py=utf-8 +encoding//tmp/Material/Effect/LineEffect.py=utf-8 +encoding//tmp/Material/Utils/Colors.py=utf-8 +encoding//tmp/Material/Utils/MaterialProperty.py=utf-8 +encoding//tmp/Material/Widget/LineEdit.py=utf-8 +encoding//tmp/Material/test/TestLineEdit.py=utf-8 encoding//tmp/\u622A\u56FE\u753B\u77E9\u5F62/DrawRectangle.py=utf-8 encoding//tmp/\u7B80\u5355\u63D2\u4EF6/Widget.py=utf-8 encoding//\u4E0B\u62C9\u9009\u62E9\u8054\u52A8/ComboBox.py=utf-8 @@ -25,11 +30,6 @@ encoding//\u68A6\u5E7B\u6811/DreamTree.py=utf-8 encoding//\u6C14\u6CE1\u63D0\u793A/BubbleTips.py=utf-8 encoding//\u6D4F\u89C8\u5668\u83B7\u53D6Cookie/WebEngineView.py=utf-8 encoding//\u6D4F\u89C8\u5668\u83B7\u53D6Cookie/WebView.py=utf-8 -encoding//\u754C\u9762\u7F8E\u5316/Material/Effect/LineEffect.py=utf-8 -encoding//\u754C\u9762\u7F8E\u5316/Material/Utils/Colors.py=utf-8 -encoding//\u754C\u9762\u7F8E\u5316/Material/Utils/MaterialProperty.py=utf-8 -encoding//\u754C\u9762\u7F8E\u5316/Material/Widget/LineEdit.py=utf-8 -encoding//\u754C\u9762\u7F8E\u5316/Material/test/TestLineEdit.py=utf-8 encoding//\u754C\u9762\u7F8E\u5316/QFileSystemModel\u56FE\u6807/FileSystemModel.py=utf-8 encoding//\u754C\u9762\u7F8E\u5316/QLabel\u5706\u5F62\u5934\u50CF/CircleLabel.py=utf-8 encoding//\u754C\u9762\u7F8E\u5316/QMessageBox\u6837\u5F0F/\u65B9\u6848\u4E00/critical.py=utf-8 diff --git a/README.md b/README.md index dbc6c28..8f7b7eb 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ ### [4.界面美化](界面美化/) - [4.1 QSS美化例子](界面美化/QSS美化例子) - - [4.2 Material Style](界面美化/Material) + - [4.2 Material Style](https://github.com/892768447/QMaterial) - [4.3 QMessageBox样式](界面美化/QMessageBox样式) - [4.4 QScrollBar滚动条样式](界面美化/QScrollBar滚动条样式) - [4.5 QLabel圆形头像](界面美化/QLabel圆形头像) diff --git a/界面美化/Material/Effect/LineEffect.py b/界面美化/Material/Effect/LineEffect.py deleted file mode 100644 index 10022fd..0000000 --- a/界面美化/Material/Effect/LineEffect.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -''' -Created on 2018年2月3日 -@author: Irony."[讽刺] -@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447 -@email: 892768447@qq.com -@file: LineEffect -@description: -''' -from PyQt5.QtCore import QTimer, QLine -from PyQt5.QtGui import QPen - - -__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com" -__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]" -__Version__ = "Version 1.0" - - -class LineEffect: - - def __init__(self, *args, **kwargs): - self._lSetp = 0 - self._lSp = 20 - self._lInDraw = False # 获取焦点绘制状态 - self._lOutDraw = False # 失去焦点绘制状态 - self._lEnabled = True - self._lTimer = QTimer( - self, interval=20, timeout=self._updateLineEffect) # 计时器 - - def _focusInEvent(self, event): - if not self._lEnabled: - return - self._lTimer.stop() - self._lInDraw = True - self._lOutDraw = False - self._lSetp = 0 - self._lTimer.start() - self.update() - - def _focusOutEvent(self, event): - if not self._lEnabled: - return - self._lTimer.stop() - self._lInDraw = False - self._lOutDraw = True - self._lSetp = 0 - self._lTimer.start() - self.update() - - def _paintEvent(self, painter): - if not self._lEnabled: - return - pen = QPen(self.lineColor) - pen.setWidth(self.borderWidth) - painter.setPen(pen) - cx, setp = self.width() / 2, self.width() / self._lSp - if self.hasFocus(): - if self._lInDraw: - painter.drawLines( - QLine( - cx, self.height(), cx + setp * self._lSetp, self.height()), - QLine( - cx, self.height(), cx - setp * self._lSetp, self.height()), - ) - else: - painter.drawLine(0, self.height(), self.width(), self.height()) - else: - if self._lOutDraw: - painter.drawLines( - QLine(cx + setp * (self._lSp - self._lSetp), - self.height(), cx, self.height()), - QLine(cx - setp * (self._lSp - self._lSetp), - self.height(), cx, self.height()), - ) - - def _updateLineEffect(self): - if self._lSetp < self._lSp: - self._lSetp += 1 - self.repaint() - if self._lSetp == self._lSp: - self._lSetp = 0 - self._lTimer.stop() - if self._lInDraw: - self._lInDraw = False - if self._lOutDraw: - self._lOutDraw = False - self.repaint() - - def _setEnabled(self, enable): - self._lEnabled = enable - - def _setDisabled(self, enable): - self._lEnabled = not enable diff --git a/界面美化/Material/Effect/__init__.py b/界面美化/Material/Effect/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/界面美化/Material/README.md b/界面美化/Material/README.md deleted file mode 100644 index d8fc214..0000000 --- a/界面美化/Material/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Like Material Style - -### [1. LineEdit](test/TestLineEdit.py) - -![LineEdit](ScreenShot/LineEdit.gif) \ No newline at end of file diff --git a/界面美化/Material/ScreenShot/LineEdit.gif b/界面美化/Material/ScreenShot/LineEdit.gif deleted file mode 100644 index 390369a32fc67871e6e5fae0dc6e3a84ccd211c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88699 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 Wrq^x!qbz3e|4m`c_t23ceE$o{Ap0}` diff --git a/界面美化/Material/Utils/Colors.py b/界面美化/Material/Utils/Colors.py deleted file mode 100644 index 19f675a..0000000 --- a/界面美化/Material/Utils/Colors.py +++ /dev/null @@ -1,618 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -''' -Created on 2018年2月3日 -@author: Irony."[讽刺] -@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447 -@email: 892768447@qq.com -@file: Colors -@description: -''' -from collections import OrderedDict - -from PyQt5.QtGui import QColor - - -__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com" -__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]" -__Version__ = "Version 1.0" - - -class _Color(QColor): - - def __init__(self, *args, **kwargs): - super(_Color, self).__init__(*args, **kwargs) - self._name = "_Color" - - def getOpacity(self, alpha: int = 0.6) -> QColor: - ''' - #类似CSS中的opacity(0-1) - #get opacity like css opacity - :param alpha: 透明度 - ''' - return _Color(self).setAlpha(int(255 * alpha)) - - def setAlpha(self, alpha: int) -> QColor: - """ - #设置透明度并且返回本身 - #set alpha and return self - """ - super(_Color, self).setAlpha(alpha) - return self - - def setNamed(self, name): - self._name = name - return self - - def __str__(self): - return "rgba{rgba}".format(rgba=self.getRgb()) - - -class _Base(object): - - @property - def default(self): - """ - #默认选择饱和度为500的颜色值 - #choose default saturation(500) value - """ - try: - return getattr(self, "C500") - except Exception as e: - print(e) - return QColor(255, 255, 255) - - @classmethod - def alls(cls): - return (cls.C50, cls.C100, cls.C200, cls.C300, - cls.C400, cls.C500, cls.C600, cls.C700, - cls.C800, cls.C900, cls.A100, cls.A200, - cls.A400, cls.A700) - - -class Red(_Base): - """ - # 红色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#fde0dc").setNamed("C50") - C100 = _Color("#f9bdbb").setNamed("C100") - C200 = _Color("#f69988").setNamed("C200") - C300 = _Color("#f36c60").setNamed("C300") - C400 = _Color("#e84e40").setNamed("C400") - C500 = _Color("#e51c23").setNamed("C500") - C600 = _Color("#dd191d").setNamed("C600") - C700 = _Color("#d01716").setNamed("C700") - C800 = _Color("#c41411").setNamed("C800") - C900 = _Color("#b0120a").setNamed("C900") - A100 = _Color("#ff7997").setNamed("A100") - A200 = _Color("#ff5177").setNamed("A200") - A400 = _Color("#ff2d6f").setNamed("A400") - A700 = _Color("#e00032").setNamed("A700") - - -class Pink(_Base): - """ - # 粉色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#fce4ec").setNamed("C50") - C100 = _Color("#f8bbd0").setNamed("C100") - C200 = _Color("#f48fb1").setNamed("C200") - C300 = _Color("#f06292").setNamed("C300") - C400 = _Color("#ec407a").setNamed("C400") - C500 = _Color("#e91e63").setNamed("C500") - C600 = _Color("#d81b60").setNamed("C600") - C700 = _Color("#c2185b").setNamed("C700") - C800 = _Color("#ad1457").setNamed("C800") - C900 = _Color("#880e4f").setNamed("C900") - A100 = _Color("#ff80ab").setNamed("A100") - A200 = _Color("#ff4081").setNamed("A200") - A400 = _Color("#f50057").setNamed("A400") - A700 = _Color("#c51162").setNamed("A700") - - -class Purple(_Base): - """ - # 紫色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#f3e5f5").setNamed("C50") - C100 = _Color("#e1bee7").setNamed("C100") - C200 = _Color("#ce93d8").setNamed("C200") - C300 = _Color("#ba68c8").setNamed("C300") - C400 = _Color("#ab47bc").setNamed("C400") - C500 = _Color("#9c27b0").setNamed("C500") - C600 = _Color("#8e24aa").setNamed("C600") - C700 = _Color("#7b1fa2").setNamed("C700") - C800 = _Color("#6a1b9a").setNamed("C800") - C900 = _Color("#4a148c").setNamed("C900") - A100 = _Color("#ea80fc").setNamed("A100") - A200 = _Color("#e040fb").setNamed("A200") - A400 = _Color("#d500f9").setNamed("A400") - A700 = _Color("#aa00ff").setNamed("A700") - - -class DeepPurple(_Base): - """ - # 深紫色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#ede7f6").setNamed("C50") - C100 = _Color("#d1c4e9").setNamed("C100") - C200 = _Color("#b39ddb").setNamed("C200") - C300 = _Color("#9575cd").setNamed("C300") - C400 = _Color("#7e57c2").setNamed("C400") - C500 = _Color("#673ab7").setNamed("C500") - C600 = _Color("#5e35b1").setNamed("C600") - C700 = _Color("#512da8").setNamed("C700") - C800 = _Color("#4527a0").setNamed("C800") - C900 = _Color("#311b92").setNamed("C900") - A100 = _Color("#b388ff").setNamed("A100") - A200 = _Color("#7c4dff").setNamed("A200") - A400 = _Color("#651fff").setNamed("A400") - A700 = _Color("#6200ea").setNamed("A700") - - -class Indigo(_Base): - """ - # 靛蓝 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#e8eaf6").setNamed("C50") - C100 = _Color("#c5cae9").setNamed("C100") - C200 = _Color("#9fa8da").setNamed("C200") - C300 = _Color("#7986cb").setNamed("C300") - C400 = _Color("#5c6bc0").setNamed("C400") - C500 = _Color("#3f51b5").setNamed("C500") - C600 = _Color("#3949ab").setNamed("C600") - C700 = _Color("#303f9f").setNamed("C700") - C800 = _Color("#283593").setNamed("C800") - C900 = _Color("#1a237e").setNamed("C900") - A100 = _Color("#8c9eff").setNamed("A100") - A200 = _Color("#536dfe").setNamed("A200") - A400 = _Color("#3d5afe").setNamed("A400") - A700 = _Color("#304ffe").setNamed("A700") - - -class Blue(_Base): - """ - # 蓝色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#e7e9fd").setNamed("C50") - C100 = _Color("#d0d9ff").setNamed("C100") - C200 = _Color("#afbfff").setNamed("C200") - C300 = _Color("#91a7ff").setNamed("C300") - C400 = _Color("#738ffe").setNamed("C400") - C500 = _Color("#5677fc").setNamed("C500") - C600 = _Color("#4e6cef").setNamed("C600") - C700 = _Color("#455ede").setNamed("C700") - C800 = _Color("#3b50ce").setNamed("C800") - C900 = _Color("#2a36b1").setNamed("C900") - A100 = _Color("#a6baff").setNamed("A100") - A200 = _Color("#6889ff").setNamed("A200") - A400 = _Color("#4d73ff").setNamed("A400") - A700 = _Color("#4d69ff").setNamed("A700") - - -class LightBlue(_Base): - """ - # 亮蓝色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#e1f5fe").setNamed("C50") - C100 = _Color("#b3e5fc").setNamed("C100") - C200 = _Color("#81d4fa").setNamed("C200") - C300 = _Color("#4fc3f7").setNamed("C300") - C400 = _Color("#29b6f6").setNamed("C400") - C500 = _Color("#03a9f4").setNamed("C500") - C600 = _Color("#039be5").setNamed("C600") - C700 = _Color("#0288d1").setNamed("C700") - C800 = _Color("#0277bd").setNamed("C800") - C900 = _Color("#01579b").setNamed("C900") - A100 = _Color("#80d8ff").setNamed("A100") - A200 = _Color("#40c4ff").setNamed("A200") - A400 = _Color("#00b0ff").setNamed("A400") - A700 = _Color("#0091ea").setNamed("A700") - - -class Cyan(_Base): - """ - # 青色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#e0f7fa").setNamed("C50") - C100 = _Color("#b2ebf2").setNamed("C100") - C200 = _Color("#80deea").setNamed("C200") - C300 = _Color("#4dd0e1").setNamed("C300") - C400 = _Color("#26c6da").setNamed("C400") - C500 = _Color("#00bcd4").setNamed("C500") - C600 = _Color("#00acc1").setNamed("C600") - C700 = _Color("#0097a7").setNamed("C700") - C800 = _Color("#00838f").setNamed("C800") - C900 = _Color("#006064").setNamed("C900") - A100 = _Color("#84ffff").setNamed("A100") - A200 = _Color("#18ffff").setNamed("A200") - A400 = _Color("#00e5ff").setNamed("A400") - A700 = _Color("#00b8d4").setNamed("A700") - - -class Teal(_Base): - """ - # 蓝绿色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#e0f2f1").setNamed("C50") - C100 = _Color("#b2dfdb").setNamed("C100") - C200 = _Color("#80cbc4").setNamed("C200") - C300 = _Color("#4db6ac").setNamed("C300") - C400 = _Color("#26a69a").setNamed("C400") - C500 = _Color("#009688").setNamed("C500") - C600 = _Color("#00897b").setNamed("C600") - C700 = _Color("#00796b").setNamed("C700") - C800 = _Color("#00695c").setNamed("C800") - C900 = _Color("#004d40").setNamed("C900") - A100 = _Color("#a7ffeb").setNamed("A100") - A200 = _Color("#64ffda").setNamed("A200") - A400 = _Color("#1de9b6").setNamed("A400") - A700 = _Color("#00bfa5").setNamed("A700") - - -class Green(_Base): - """ - # 绿色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#d0f8ce").setNamed("C50") - C100 = _Color("#a3e9a4").setNamed("C100") - C200 = _Color("#72d572").setNamed("C200") - C300 = _Color("#42bd41").setNamed("C300") - C400 = _Color("#2baf2b").setNamed("C400") - C500 = _Color("#259b24").setNamed("C500") - C600 = _Color("#0a8f08").setNamed("C600") - C700 = _Color("#0a7e07").setNamed("C700") - C800 = _Color("#056f00").setNamed("C800") - C900 = _Color("#0d5302").setNamed("C900") - A100 = _Color("#a2f78d").setNamed("A100") - A200 = _Color("#5af158").setNamed("A200") - A400 = _Color("#14e715").setNamed("A400") - A700 = _Color("#12c700").setNamed("A700") - - -class LightGreen(_Base): - """ - # 亮绿色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#f1f8e9").setNamed("C50") - C100 = _Color("#dcedc8").setNamed("C100") - C200 = _Color("#c5e1a5").setNamed("C200") - C300 = _Color("#aed581").setNamed("C300") - C400 = _Color("#9ccc65").setNamed("C400") - C500 = _Color("#8bc34a").setNamed("C500") - C600 = _Color("#7cb342").setNamed("C600") - C700 = _Color("#689f38").setNamed("C700") - C800 = _Color("#558b2f").setNamed("C800") - C900 = _Color("#33691e").setNamed("C900") - A100 = _Color("#ccff90").setNamed("A100") - A200 = _Color("#b2ff59").setNamed("A200") - A400 = _Color("#76ff03").setNamed("A400") - A700 = _Color("#64dd17").setNamed("A700") - - -class Lime(_Base): - """ - # 淡黄绿色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#f9fbe7").setNamed("C50") - C100 = _Color("#f0f4c3").setNamed("C100") - C200 = _Color("#e6ee9c").setNamed("C200") - C300 = _Color("#dce775").setNamed("C300") - C400 = _Color("#d4e157").setNamed("C400") - C500 = _Color("#cddc39").setNamed("C500") - C600 = _Color("#c0ca33").setNamed("C600") - C700 = _Color("#afb42b").setNamed("C700") - C800 = _Color("#9e9d24").setNamed("C800") - C900 = _Color("#827717").setNamed("C900") - A100 = _Color("#f4ff81").setNamed("A100") - A200 = _Color("#eeff41").setNamed("A200") - A400 = _Color("#c6ff00").setNamed("A400") - A700 = _Color("#aeea00").setNamed("A700") - - -class Yellow(_Base): - """ - # 黄色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#fffde7").setNamed("C50") - C100 = _Color("#fff9c4").setNamed("C100") - C200 = _Color("#fff59d").setNamed("C200") - C300 = _Color("#fff176").setNamed("C300") - C400 = _Color("#ffee58").setNamed("C400") - C500 = _Color("#ffeb3b").setNamed("C500") - C600 = _Color("#fdd835").setNamed("C600") - C700 = _Color("#fbc02d").setNamed("C700") - C800 = _Color("#f9a825").setNamed("C800") - C900 = _Color("#f57f17").setNamed("C900") - A100 = _Color("#ffff8d").setNamed("A100") - A200 = _Color("#ffff00").setNamed("A200") - A400 = _Color("#ffea00").setNamed("A400") - A700 = _Color("#ffd600").setNamed("A700") - - -class Amber(_Base): - """ - # 琥珀色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#fff8e1").setNamed("C50") - C100 = _Color("#ffecb3").setNamed("C100") - C200 = _Color("#ffe082").setNamed("C200") - C300 = _Color("#ffd54f").setNamed("C300") - C400 = _Color("#ffca28").setNamed("C400") - C500 = _Color("#ffc107").setNamed("C500") - C600 = _Color("#ffb300").setNamed("C600") - C700 = _Color("#ffa000").setNamed("C700") - C800 = _Color("#ff8f00").setNamed("C800") - C900 = _Color("#ff6f00").setNamed("C900") - A100 = _Color("#ffe57f").setNamed("A100") - A200 = _Color("#ffd740").setNamed("A200") - A400 = _Color("#ffc400").setNamed("A400") - A700 = _Color("#ffab00").setNamed("A700") - - -class Orange(_Base): - """ - # 橙色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#fff3e0").setNamed("C50") - C100 = _Color("#ffe0b2").setNamed("C100") - C200 = _Color("#ffcc80").setNamed("C200") - C300 = _Color("#ffb74d").setNamed("C300") - C400 = _Color("#ffa726").setNamed("C400") - C500 = _Color("#ff9800").setNamed("C500") - C600 = _Color("#fb8c00").setNamed("C600") - C700 = _Color("#f57c00").setNamed("C700") - C800 = _Color("#ef6c00").setNamed("C800") - C900 = _Color("#e65100").setNamed("C900") - A100 = _Color("#ffd180").setNamed("A100") - A200 = _Color("#ffab40").setNamed("A200") - A400 = _Color("#ff9100").setNamed("A400") - A700 = _Color("#ff6d00").setNamed("A700") - - -class DeepOrange(_Base): - """ - # 深橙色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 A100 A200 A400 A700 - """ - - C50 = _Color("#fbe9e7").setNamed("C50") - C100 = _Color("#ffccbc").setNamed("C100") - C200 = _Color("#ffab91").setNamed("C200") - C300 = _Color("#ff8a65").setNamed("C300") - C400 = _Color("#ff7043").setNamed("C400") - C500 = _Color("#ff5722").setNamed("C500") - C600 = _Color("#f4511e").setNamed("C600") - C700 = _Color("#e64a19").setNamed("C700") - C800 = _Color("#d84315").setNamed("C800") - C900 = _Color("#bf360c").setNamed("C900") - A100 = _Color("#ff9e80").setNamed("A100") - A200 = _Color("#ff6e40").setNamed("A200") - A400 = _Color("#ff3d00").setNamed("A400") - A700 = _Color("#dd2c00").setNamed("A700") - - -class Brown(_Base): - """ - # 棕色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 - """ - - C50 = _Color("#efebe9").setNamed("C50") - C100 = _Color("#d7ccc8").setNamed("C100") - C200 = _Color("#bcaaa4").setNamed("C200") - C300 = _Color("#a1887f").setNamed("C300") - C400 = _Color("#8d6e63").setNamed("C400") - C500 = _Color("#795548").setNamed("C500") - C600 = _Color("#6d4c41").setNamed("C600") - C700 = _Color("#5d4037").setNamed("C700") - C800 = _Color("#4e342e").setNamed("C800") - C900 = _Color("#3e2723").setNamed("C900") - - @classmethod - def alls(cls): - return (cls.C50, cls.C100, cls.C200, cls.C300, - cls.C400, cls.C500, cls.C600, cls.C700, - cls.C800, cls.C900) - - -class Grey(_Base): - """ - # 灰色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 1000 - """ - - C50 = _Color("#fafafa").setNamed("C50") - C100 = _Color("#f5f5f5").setNamed("C100") - C200 = _Color("#eeeeee").setNamed("C200") - C300 = _Color("#e0e0e0").setNamed("C300") - C400 = _Color("#bdbdbd").setNamed("C400") - C500 = _Color("#9e9e9e").setNamed("C500") - C600 = _Color("#757575").setNamed("C600") - C700 = _Color("#616161").setNamed("C700") - C800 = _Color("#424242").setNamed("C800") - C900 = _Color("#212121").setNamed("C900") - C1000 = _Color("#000000").setNamed("C1000") - - @classmethod - def alls(cls): - return (cls.C50, cls.C100, cls.C200, cls.C300, - cls.C400, cls.C500, cls.C600, cls.C700, - cls.C800, cls.C900, cls.C1000) - - -class BlueGrey(_Base): - """ - # 蓝灰色 - #数字代表饱和度 - #50 100 200 300 400 500 600 100 800 900 - """ - - C50 = _Color("#eceff1").setNamed("C50") - C100 = _Color("#cfd8dc").setNamed("C100") - C200 = _Color("#b0bec5").setNamed("C200") - C300 = _Color("#90a4ae").setNamed("C300") - C400 = _Color("#78909c").setNamed("C400") - C500 = _Color("#607d8b").setNamed("C500") - C600 = _Color("#546e7a").setNamed("C600") - C700 = _Color("#455a64").setNamed("C700") - C800 = _Color("#37474f").setNamed("C800") - C900 = _Color("#263238").setNamed("C900") - - @classmethod - def alls(cls): - return (cls.C50, cls.C100, cls.C200, cls.C300, - cls.C400, cls.C500, cls.C600, cls.C700, - cls.C800, cls.C900) - - -class Black(_Base): - """ - #黑色 - """ - C500 = _Color("black").setNamed("C500") - - @classmethod - def alls(cls): - return (cls.C500,) - - -class White(_Base): - """ - #白色 - """ - C500 = _Color("white").setNamed("C500") - - @classmethod - def alls(cls): - return (cls.C500,) - - -class Transparent(_Base): - '''透明''' - name = "Transparent" - - C500 = _Color("white").setNamed("C500") - - @classmethod - def alls(cls): - return (cls.C500,) - - @property - def default(self): - return self.C500.getOpacity(0) - - -class Colors(object): - RED = Red() # 红色 - PINK = Pink() # 粉色 - PURPLE = Purple() # 紫色 - DEEPPURPLE = DeepPurple() # 深紫色 - INDIGO = Indigo() # 靛蓝 - BLUE = Blue() # 蓝色 - LIGHTBLUE = LightBlue() # 亮蓝色 - CYAN = Cyan() # 青色 - TEAL = Teal() # 蓝绿色 - GREEN = Green() # 绿色 - LIGHTGREEN = LightGreen() # 亮绿色 - LIME = Lime() # 淡黄绿色 - YELLOW = Yellow() # 黄色 - AMBER = Amber() # 琥珀色 - ORANGE = Orange() # 橙色 - DEEPORANGE = DeepOrange() # 深橙色 - BROWN = Brown() # 棕色 - GREY = Grey() # 灰色 - BLUEGREY = BlueGrey() # 蓝灰色 - BLACK = Black() # 黑色 - WHITE = White() # 白色 - TRANSPARENT = Transparent() # 透明 - - -def alls(): - _ = OrderedDict() - _["Red"] = Red.alls() # 红色 - _["Pink"] = Pink.alls() # 粉色 - _["Purple"] = Purple.alls() # 紫色 - _["DeepPurple"] = DeepPurple.alls() # 深紫色 - _["Indigo"] = Indigo.alls() # 靛蓝 - _["Blue"] = Blue.alls() # 蓝色 - _["LightBlue"] = LightBlue.alls() # 亮蓝色 - _["Cyan"] = Cyan.alls() # 青色 - _["Teal"] = Teal.alls() # 蓝绿色 - _["Green"] = Green.alls() # 绿色 - _["LightGreen"] = LightGreen.alls() # 亮绿色 - _["Lime"] = Lime.alls() # 淡黄绿色 - _["Yellow"] = Yellow.alls() # 黄色 - _["Amber"] = Amber.alls() # 琥珀色 - _["Orange"] = Orange.alls() # 橙色 - _["DeepOrange"] = DeepOrange.alls() # 深橙色 - _["Brown"] = Brown.alls() # 棕色 - _["Grey"] = Grey.alls() # 灰色 - _["BlueGrey"] = BlueGrey.alls() # 蓝灰色 - return _ - -# def alls(): -# _colors = {} -# for colors in dir(Colors): -# if colors.startswith("_"): -# continue -# _Color = getattr(Colors, colors) -# tmp = [] -# for color in dir(_Color): -# if color.startswith("_") or color == "default": -# continue -# tmp.append(color) -# _colors[_Color.__class__] = tmp -# return _colors - -if __name__ == "__main__": - print(alls().keys()) diff --git a/界面美化/Material/Utils/MaterialProperty.py b/界面美化/Material/Utils/MaterialProperty.py deleted file mode 100644 index 7a0ba74..0000000 --- a/界面美化/Material/Utils/MaterialProperty.py +++ /dev/null @@ -1,363 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -''' -Created on 2018年2月3日 -@author: Irony."[讽刺] -@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447 -@email: 892768447@qq.com -@file: MaterialProperty -@description: -''' -from PyQt5.QtCore import QObject -from PyQt5.QtGui import QColor, QFont - -from Material.Utils.Colors import _Color, Colors # @UnresolvedImport - - -__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com" -__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]" -__Version__ = "Version 1.0" - -class MaterialProperty(QObject): - - def _getColor(self, color: [str, int, tuple, list]) -> QColor: - ''' - :param color: str, int, tuple, list - ''' - if isinstance(color, _Color) or isinstance(color, QColor): - return color - elif isinstance(color, tuple) or isinstance(color, list): - for c in color: - if not isinstance(c, int): - return _Color(255, 255, 255) - if len(color) == 3 or len(color) == 4: - return _Color(*color) - elif isinstance(color, int): - return _Color(color) - elif isinstance(color, str) and color.startswith("#"): - return _Color(color) - else: - return _Color(255, 255, 255) - - @property - def title(self) -> str: - '''get title(标题)''' - if not hasattr(self, "_title"): - self._title = "" - return self._title - - @title.setter - def title(self, title: str): - ''' - set title(设置标题) - :param title: str - ''' - self._title = title if isinstance(title, str) else "" - self.setTitle(title) - - def setTitle(self, title): - pass - - @property - def content(self) -> str: - '''get content(内容)''' - if not hasattr(self, "_content"): - self._content = "" - return self._content - - @content.setter - def content(self, content: str): - ''' - set content(设置内容) - :param content: str - ''' - self._content = content if isinstance(content, str) else "" - self.setContent(content) - - def setContent(self, content): - pass - - @property - def fontName(self) -> str: - '''get font name(字体)''' - if not hasattr(self, "_fontName"): - self._fontName = QFont().defaultFamily() - return self._fontName - - @fontName.setter - def fontName(self, name: str): - ''' - set font name(设置字体) - :param name: str - ''' - self._fontName = name if isinstance( - name, str) else QFont().defaultFamily() - - @property - def fontSize(self) -> int: - '''get font size(字体大小)''' - if not hasattr(self, "_fontSize"): - self._fontSize = 16 # 24 - return self._fontSize - - @fontSize.setter - def fontSize(self, size: int): - ''' - set font size(设置字体大小) - :param size: int - ''' - self._fontSize = size if isinstance(size, int) else 16 # 24 - - @property - def titleFontSize(self) -> int: - '''get font size(字体大小)''' - if not hasattr(self, "_titleFontSize"): - self._titleFontSize = 14 - return self._titleFontSize - - @titleFontSize.setter - def titleFontSize(self, size: int): - ''' - set title font size(设置字体大小) - :param size: int - ''' - self._titleFontSize = size if isinstance(size, int) else 14 - - @property - def radioSize(self) -> int: - '''get radio circle size(RadioButton左侧圆形大小)''' - if not hasattr(self, "_radioSize"): - self._radioSize = 16 - return self._radioSize - - @radioSize.setter - def radioSize(self, size: int): - ''' - set radio circle size(设置RadioButton左侧圆形大小) - :param size: int - ''' - self._radioSize = size if isinstance(size, int) and size >= 16 else 16 - - @property - def borderWidth(self) -> int: - '''return top bottom left right border width(上下左右边框的宽度)''' - if not hasattr(self, "_borderWidth"): - self._borderWidth = 2 - return self._borderWidth - - @borderWidth.setter - def borderWidth(self, width: int): - ''' - set top bottom left right border width(设置上下左右边框的宽度) - :param width: 2 - ''' - try: - self._borderWidth = int(width) - except: - self._borderWidth = 2 - - @property - def borderRadius(self) -> int: - '''return top bottom left right rounded corner(上下左右圆角大小)''' - if not hasattr(self, "_borderRadius"): - self._borderRadius = 2 - return self._borderRadius - - @borderRadius.setter - def borderRadius(self, radius: int): - ''' - set top bottom left right rounded corner(设置上下左右圆角大小) - :param radius: 2 - ''' - try: - self._borderRadius = int(radius) - except: - self._borderRadius = 2 - - @property - def borderColor(self) -> QColor: - '''the border color, default is transparent(边框颜色,默认透明)''' - if not hasattr(self, "_borderColor"): - self._borderColor = Colors.TRANSPARENT.default # 透明 - return self._borderColor - - @borderColor.setter - def borderColor(self, color: [str, int, tuple, list]): - '''set border color(设置边框颜色) - :param color: str, int, tuple, list - Example: - xx.borderColor = (255, 255, 255) # white(白色) - xx.borderColor = [255, 255, 255, 100] # white color with alpha = 100(白色带100透明) - xx.borderColor = 55 # RGBA: (0, 0, 55, 255) - xx.borderColor = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._borderColor = self._getColor(color) - - @property - def borderColorDisable(self) -> QColor: - '''get disable border color(获取禁用状态下的边框颜色)''' - if not hasattr(self, "_borderColorDisable"): - # default color is black with 0.6 alpha(0.6透明度灰色) - self._borderColorDisable = Colors.GREY.default - return self._borderColorDisable - - @borderColorDisable.setter - def borderColorDisable(self, color: [str, int, tuple, list]): - ''' - set disable border color(设置禁用状态边框颜色) - :param color: str, int, tuple, list - Example: - xx.borderColorDisable = (255, 255, 255) # white(白色) - xx.borderColorDisable = [255, 255, 255, 100] # white color with alpha = 100(白色带100透明) - xx.borderColorDisable = 55 # RGBA: (0, 0, 55, 255) - xx.borderColorDisable = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._borderColorDisable = self._getColor(color) - - @property - def lineHintColor(self) -> QColor: - '''get lineedit hint line color(获取输入框底部横线颜色)''' - if not hasattr(self, "_lineHintColor"): - # default grey 300(灰色 300) - self._lineHintColor = Colors.GREY.C300 - return self._lineHintColor - - @lineHintColor.setter - def lineHintColor(self, color: [str, int, tuple, list]): - ''' - set lineedit hint line color(设置输入框底部横线颜色) - :param color: str, int, tuple, list - Example: - xx._lineHintColor = (255, 255, 255) # white(白色) - xx._lineHintColor = [255, 255, 255, 100] # white color with alpha = 100(白色带100透明) - xx._lineHintColor = 55 # RGBA: (0, 0, 55, 255) - xx._lineHintColor = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._lineHintColor = self._getColor(color) - - @property - def lineColor(self) -> QColor: - '''get lineedit line color(获取输入框底部横线动画颜色)''' - if not hasattr(self, "_lineColor"): - self._lineColor = Colors.BLUE.default # default blue(蓝色) - return self._lineColor - - @lineColor.setter - def lineColor(self, color: [str, int, tuple, list]): - ''' - set lineedit line color(设置输入框底部横线颜色) - :param color: str, int, tuple, list - Example: - xx._lineColor = (255, 255, 255) # white(白色) - xx._lineColor = [255, 255, 255, 100] # white color with alpha = 100(白色带100透明) - xx._lineColor = 55 # RGBA: (0, 0, 55, 255) - xx._lineColor = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._lineColor = self._getColor(color) - - @property - def fontColor(self) -> QColor: - '''get font color(获取当前字体颜色)''' - if not hasattr(self, "_fontColor"): - self._fontColor = Colors.BLACK.default # default black(默认黑色) - return self._fontColor - - @fontColor.setter - def fontColor(self, color: [str, int, tuple, list]): - ''' - set font color(设置字体颜色) - :param color: str, int, tuple, list - Example: - xx.fontColor = (255, 255, 255) # white(白色) - xx.fontColor = [255, 255, 255, 100] # white color with alpha = 100(白色带100透明) - xx.fontColor = 55 # RGBA: (0, 0, 55, 255) - xx.fontColor = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._fontColor = self._getColor(color) - - @property - def fontColorDisable(self) -> QColor: - '''get disable font color(获取禁用状态下的字体颜色)''' - if not hasattr(self, "_fontColorDisable"): - # default color is black with 0.6 alpha(0.6透明度灰色) - self._fontColorDisable = Colors.GREY.default - return self._fontColorDisable - - @fontColorDisable.setter - def fontColorDisable(self, color: [str, int, tuple, list]): - ''' - set disable font color(设置禁用状态字体颜色) - :param color: str, int, tuple, list - Example: - xx.fontColorDisable = (255, 255, 255) # white(白色) - xx.fontColorDisable = [255, 255, 255, 100] # white color with alpha = 100(白色带100透明) - xx.fontColorDisable = 55 # RGBA: (0, 0, 55, 255) - xx.fontColorDisable = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._fontColorDisable = self._getColor(color) - - @property - def backgroundColor(self): - '''get default background color(获取当前背景颜色)''' - if not hasattr(self, "_backgroundColor"): - self._backgroundColor = Colors.WHITE.default # 白色 - return self._backgroundColor - - @backgroundColor.setter - def backgroundColor(self, color: [str, int, tuple, list]): - ''' - set background color(设置背景颜色) - :param color: str, int, tuple, list - Example: - xx.backgroundColor = (255, 255, 255) # white - xx.backgroundColor = [255, 255, 255, 100] # white color with alpha = 100 - xx.backgroundColor = 55 # RGBA: (0, 0, 55, 255) - xx.backgroundColor = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._backgroundColor = self._getColor(color) - - @property - def backgroundColorDisable(self): - '''get disable background color(获取禁用状态下的背景颜色)''' - if not hasattr(self, "_backgroundColorDisable"): - # 0.6透明度背景颜色 - self._backgroundColorDisable = self.backgroundColor.getOpacity(0.5) - return self._backgroundColorDisable - - @backgroundColorDisable.setter - def backgroundColorDisable(self, color: [str, int, tuple, list]): - ''' - set disable background color(设置禁用状态背景颜色) - :param color: str, int, tuple, list - Example: - xx.backgroundColorDisable = (255, 255, 255) # white - xx.backgroundColorDisable = [255, 255, 255, 100] # white color with alpha = 100 - xx.backgroundColorDisable = 55 # RGBA: (0, 0, 55, 255) - xx.backgroundColorDisable = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._backgroundColorDisable = self._getColor(color) - - @property - def rippleColor(self): - '''get rippleEffect color(获取波纹颜色)''' - if not hasattr(self, "_rippleColor"): - # 0.2透明度背景颜色 - self._rippleColor = Colors.WHITE.default.getOpacity(0.5) - return self._rippleColor - - @rippleColor.setter - def rippleColor(self, color: [str, int, tuple, list]): - ''' - set rippleEffect(设置波纹颜色) - :param color: str, int, tuple, list - Example: - xx.rippleColor = (255, 255, 255) # white - xx.rippleColor = [255, 255, 255, 100] # white color with alpha = 100 - xx.rippleColor = 55 # RGBA: (0, 0, 55, 255) - xx.rippleColor = "#FFFFFF" # RGBA: (255, 255, 255, 255) - ''' - self._rippleColor = self._getColor(color) - -if __name__ == "__main__": - help(MaterialProperty) diff --git a/界面美化/Material/Utils/__init__.py b/界面美化/Material/Utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/界面美化/Material/Widget/LineEdit.py b/界面美化/Material/Widget/LineEdit.py deleted file mode 100644 index 5c646c7..0000000 --- a/界面美化/Material/Widget/LineEdit.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -''' -Created on 2018年2月3日 -@author: Irony."[讽刺] -@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447 -@email: 892768447@qq.com -@file: LineEdit -@description: -''' -from PyQt5.QtGui import QPainter, QPen -from PyQt5.QtWidgets import QLineEdit, QFrame - -from Material.Effect.LineEffect import LineEffect # @UnresolvedImport -from Material.Utils.MaterialProperty import MaterialProperty # @UnresolvedImport - - -__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com" -__Copyright__ = "Copyright (c) 2018 Irony.\"[讽刺]" -__Version__ = "Version 1.0" - - -class LineEdit(QLineEdit, MaterialProperty, LineEffect): - - def __init__(self, *args, **kwargs): - super(LineEdit, self).__init__(*args, **kwargs) - self.borderWidth = 4 - LineEffect.__init__(self) - # 去掉边框 - self.setFrame(QFrame.NoFrame) - - def paintEvent(self, event): - super(LineEdit, self).paintEvent(event) - painter = QPainter(self) - pen = QPen(self.lineHintColor) - pen.setWidth(self.borderWidth) - painter.setPen(pen) # draw bottom line(画底部横线) - #painter.drawLine(self.rect().bottomLeft(), self.rect().bottomRight()) - painter.drawLine(0, self.height(), self.width(), self.height()) - if not self.isEnabled() or self.isReadOnly(): - return - LineEffect._paintEvent(self, painter) - - def focusInEvent(self, event): - super(LineEdit, self).focusInEvent(event) - LineEffect._focusInEvent(self, event) - - def focusOutEvent(self, event): - super(LineEdit, self).focusOutEvent(event) - LineEffect._focusOutEvent(self, event) - - def setReadOnly(self, only): - super(LineEdit, self).setReadOnly(only) - LineEffect._setEnabled(self, False) - - def setEnabled(self, enable): - super(LineEdit, self).setEnabled(enable) - LineEffect._setEnabled(self, enable) - - def setDisabled(self, enable): - super(LineEdit, self).setDisabled(enable) - LineEffect._setDisabled(self, enable) diff --git a/界面美化/Material/test/TestLineEdit.py b/界面美化/Material/test/TestLineEdit.py deleted file mode 100644 index f01638c..0000000 --- a/界面美化/Material/test/TestLineEdit.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -''' -Created on 2018年2月3日 -@author: Irony."[讽刺] -@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447 -@email: 892768447@qq.com -@file: TestLineEdit -@description: -''' -import sys -sys.path.insert(0, "../../") -print(sys.path) - -from PyQt5.QtWidgets import QWidget, QApplication, QGridLayout, QLabel - -from Material.Utils import Colors # @UnresolvedImport -from Material.Widget.LineEdit import LineEdit # @UnresolvedImport - - -class Window(QWidget): - - def __init__(self, *args, **kwargs): - super(Window, self).__init__(*args, **kwargs) - layout = QGridLayout(self) - colors = Colors.alls() - for row, key in enumerate(colors): - layout.addWidget(QLabel(key, self), row, 0, 1, 1) - for column, value in enumerate(colors.get(key)): - line = LineEdit(value._name, self) - line.lineColor = value -# line.setEnabled(randrange(0, 2)) - layout.addWidget(line, row, column + 1, 1, 1) - - -if __name__ == "__main__": - app = QApplication(sys.argv) - app.setApplicationDisplayName("LineEdit") - app.setApplicationName("LineEdit") - w = Window() - w.show() - sys.exit(app.exec_())