Material
This commit is contained in:
parent
6136fef9f3
commit
491e22bc15
12 changed files with 1207 additions and 11 deletions
|
@ -24,6 +24,11 @@ encoding//\u68A6\u5E7B\u6811/DreamTree.py=utf-8
|
||||||
encoding//\u6C14\u6CE1\u63D0\u793A/BubbleTips.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/WebEngineView.py=utf-8
|
||||||
encoding//\u6D4F\u89C8\u5668\u83B7\u53D6Cookie/WebView.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/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/QLabel\u5706\u5F62\u5934\u50CF/CircleLabel.py=utf-8
|
||||||
encoding//\u754C\u9762\u7F8E\u5316/QMessageBox\u6837\u5F0F/\u65B9\u6848\u4E00/critical.py=utf-8
|
encoding//\u754C\u9762\u7F8E\u5316/QMessageBox\u6837\u5F0F/\u65B9\u6848\u4E00/critical.py=utf-8
|
||||||
|
|
11
README.md
11
README.md
|
@ -33,11 +33,12 @@
|
||||||
|
|
||||||
### [4.界面美化](界面美化/)
|
### [4.界面美化](界面美化/)
|
||||||
- [4.1 QSS美化例子](界面美化/QSS美化例子)
|
- [4.1 QSS美化例子](界面美化/QSS美化例子)
|
||||||
- [4.2 QMessageBox样式](界面美化/QMessageBox样式)
|
- [4.2 Material Style](界面美化/Material)
|
||||||
- [4.3 QScrollBar滚动条样式](界面美化/QScrollBar滚动条样式)
|
- [4.3 QMessageBox样式](界面美化/QMessageBox样式)
|
||||||
- [4.4 QLabel圆形头像](界面美化/QLabel圆形头像)
|
- [4.4 QScrollBar滚动条样式](界面美化/QScrollBar滚动条样式)
|
||||||
- [4.5 QFileSystemModel图标](界面美化/QFileSystemModel图标)
|
- [4.5 QLabel圆形头像](界面美化/QLabel圆形头像)
|
||||||
- [4.6 QPushButton进度动画](界面美化/QPushButton进度动画)
|
- [4.6 QFileSystemModel图标](界面美化/QFileSystemModel图标)
|
||||||
|
- [4.7 QPushButton进度动画](界面美化/QPushButton进度动画)
|
||||||
|
|
||||||
# QQ群
|
# QQ群
|
||||||
- [PyQt & PySide](https://jq.qq.com/?_wv=1027&k=50LWvn9)
|
- [PyQt & PySide](https://jq.qq.com/?_wv=1027&k=50LWvn9)
|
||||||
|
|
95
界面美化/Material/Effect/LineEffect.py
Normal file
95
界面美化/Material/Effect/LineEffect.py
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
#!/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
|
0
界面美化/Material/Effect/__init__.py
Normal file
0
界面美化/Material/Effect/__init__.py
Normal file
5
界面美化/Material/README.md
Normal file
5
界面美化/Material/README.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Like Material Style
|
||||||
|
|
||||||
|
### [1. LineEdit](test/TestLineEdit.py)
|
||||||
|
|
||||||
|
![LineEdit](ScreenShot/LineEdit.gif)
|
BIN
界面美化/Material/ScreenShot/LineEdit.gif
Normal file
BIN
界面美化/Material/ScreenShot/LineEdit.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 87 KiB |
618
界面美化/Material/Utils/Colors.py
Normal file
618
界面美化/Material/Utils/Colors.py
Normal file
|
@ -0,0 +1,618 @@
|
||||||
|
#!/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())
|
363
界面美化/Material/Utils/MaterialProperty.py
Normal file
363
界面美化/Material/Utils/MaterialProperty.py
Normal file
|
@ -0,0 +1,363 @@
|
||||||
|
#!/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 .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)
|
0
界面美化/Material/Utils/__init__.py
Normal file
0
界面美化/Material/Utils/__init__.py
Normal file
63
界面美化/Material/Widget/LineEdit.py
Normal file
63
界面美化/Material/Widget/LineEdit.py
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
#!/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 Effect.LineEffect import LineEffect # @UnresolvedImport
|
||||||
|
from 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)
|
43
界面美化/Material/test/TestLineEdit.py
Normal file
43
界面美化/Material/test/TestLineEdit.py
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#!/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 Utils import Colors # @UnresolvedImport
|
||||||
|
from 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_())
|
|
@ -5,14 +5,17 @@
|
||||||
- [1.2 QCalendarWidget日历](QSS美化例子/QCalendarWidget日历/)
|
- [1.2 QCalendarWidget日历](QSS美化例子/QCalendarWidget日历/)
|
||||||
- [1.3 QProgressBar进度条样式](QSS美化例子/QProgressBar进度条样式/)
|
- [1.3 QProgressBar进度条样式](QSS美化例子/QProgressBar进度条样式/)
|
||||||
|
|
||||||
### [2.QMessageBox样式](QMessageBox样式/)
|
### [2.Material样式](Material/)
|
||||||
- [2.1 方案一](QMessageBox样式/方案一)
|
- [2.1 LineEdit](Material/test/TestLineEdit.py)
|
||||||
- [2.2 方案二](QMessageBox样式/方案二)
|
|
||||||
|
|
||||||
### [3.QScrollBar滚动条样式](QScrollBar滚动条样式/)
|
### [3.QMessageBox样式](QMessageBox样式/)
|
||||||
|
- [3.1 方案一](QMessageBox样式/方案一)
|
||||||
|
- [3.2 方案二](QMessageBox样式/方案二)
|
||||||
|
|
||||||
### [4.QLabel圆形头像](QLabel圆形头像/)
|
### [4.QScrollBar滚动条样式](QScrollBar滚动条样式/)
|
||||||
|
|
||||||
### [5.QFileSystemModel图标](QFileSystemModel图标/)
|
### [5.QLabel圆形头像](QLabel圆形头像/)
|
||||||
|
|
||||||
|
### [6.QFileSystemModel图标](QFileSystemModel图标/)
|
||||||
|
|
||||||
### [6.QPushButton进度动画](QPushButton进度动画/)
|
### [6.QPushButton进度动画](QPushButton进度动画/)
|
Loading…
Reference in a new issue