[TOC]
该项目,目前处于开发阶段
3.xxx 以上
pyside2, pyside6, pyqt5, pyqt6
win
mac
pip install PyQtGuiLib
Log # 日志
tests # 组件测试文件
abandonCase # 存放已经放弃的的案例
PyQtGuiLib
|- animation # 动画功能文件
|- core # 组件的核心实现文件
|- styles # 基础组件皮肤包
|- header # 公共模块,函数文件
|- layoutDeformation # 影像形变布局(待写)
PyQt5学习爱好群-(讨厌自己) -- PyQtGuiLib 0.0.8.0版本
---> 修复了Borderless右下角拉伸BUG
PyQt5学习爱好群-(讨厌自己) -- PyQtGuiLib 1.1.9.5版本
---> 修复 PyQt6 版本下 无边框类(Borderless)移动BUG
导入方式
from PyQtGuiLib.styles import xxx
按钮皮肤包
from PyQtGuiLib.styles import ButtonStyle
# --- Api
ButtonStyle.style()
ButtonStyle.randomStyle() # 随机样式
ButtonStyle.contrastStyle() # 互补色样式
ButtonStyle.homologyStyle() # 同色调样式()
BuiltStyleDesigner ---> 30%
工具位置 PyQtGuiLib -> styles -> BuiltStyleDesigner -> builtStyleDesigner.py 直接运行这个文件即可
目前支持的 控件
QPushButton ---> 50%
dumpStructure() --> 100%
导入方式 from PyQtGuiLib.core.resolver import dumpStructure
dumpStructure(widget :QWidget ,spaceCount=0) # 控件的组成分析函数
# ===
注意:在单独使用该函数之前,需要加 app = QApplication(sys.argv)
如果你在一个窗口类里面使用则不需要加
QssStyleAnalysis ---> 100% 完成
导入方式 from PyQtGuiLib.styles import QssStyleAnalysis
Api ------
setParent() # 设置父类对象
setQSS(样式字符串) # 设置样式
setQSSDict(字典样式) # 设置样式
appendQSS(样式字符串) # 追加样式
appendQSSDict(字典样式) # 追加样式
toStr() # 返回样式的原始字符串
toDict() # 返回样式的字典
selector(选择器or下标) # 返回QSS对象
--- header() # 返回选择器的名称
--- headerSubdivision() # 返回列表形式的选择器名称
--- body() # 返回属性的原始字符串类型
--- bodySubdivision() # 将原始属性以列表的形式返回
--- bodyToDict() # 将原始属性以字典的形式返回(不带选择器)
--- toDict() # 将原始属性以字典的形式返回(带选择器)
--- attr(key) # 返回属性的值
--- updateAttr(key,value) # 更新/增加一个属性的值
--- removeAttr(key) # 移除一个属性
removeSelector(选择器or下标) # 移除该选择器的样式
inherit() # 样式传承 (详细用法查看 eg3案例)
# ============
代码案例位置
tests -> test_QssStyleAnalysis 目录下
QssStyleAnalysis --> 测试版
介绍
该链接器 可以在程序运行的过程中,调式控件的样式
导入方式 from PyQtGuiLib.styles import StyleLinker
Api ---
addQObject(控件对象)
addQObjects([控件对象1,控件对象2])
# ----
例子
self.styleLinker = StyleLinker() # 注意这里创建对象时,不要传递任何参数
self.styleLinker.addQObjects([控件对象1,控件对象2,...])
self.styleLinker.show()
导入方式
from abandonCase.widgets import (
BorderlessWidget, # 无边框QWidget窗口
)
特性
无边框, 可移动, 可拉伸, 窗口颜色风格变化多样
窗口系列 - --- API介绍
setEnableGColor() # 设置是否启用渐变色
自定义QSS - -- 目前支持的
qproperty - radius --> 圆角
Eg: 7
qproperty - backgroundColor --> 背景颜色
Eg: rgba(165, 138, 255, 200)
qproperty - borderWidth --> 边的宽度
Eg: 1
qproperty - borderStyle --> 边框的风格
Eg: solid
qproperty - borderColor --> 边框颜色
Eg: rgba(0, 100, 255, 255)
qproperty - border --> 边框样式
Eg: "3 solid rgba(0,100,255,255)"
qproperty - linearDirection;
--> 线性渐变的方向
Eg: "LR"
LR: 左->右
RL: 右->左
UD: 上->下
DU: 下->上
LRANG: 左上角->右下角
RLANG: 右下角->左上角
UDANG: 右上角->左下角
DUANG: 左下角->右上角
自定义: [0, 0, 100, 100]
或者[0, 0, w, h]
这里的
w, h
代只窗口当前的宽和高
qproperty - linearColor --> 线性渐变色
Eg: "rgba(142, 144, 69, 255) rgba(176, 184, 130, 255) rgba(255, 255, 255, 255)"
qproperty - linear --> 线性渐变
Eg: "LR rgba(142, 144, 69, 255) rgba(176, 184, 130, 255) rgba(130, 184, 130, 255)";
Eg: "[0,0,w,h] rgba(142, 144, 69, 255) rgba(176, 184, 130, 255) rgba(130, 184, 130, 255)";
气泡窗口 ---> 100% 完成
导入方式 from PyQtGuiLib.core import BubbleWidget
气泡窗口 -- BubbleWidget API介绍
# ---类变量
Top # 气泡方向 - 上
Down
Left
Right
# ---API
setDirection() # 设置气泡箭头方向
setText() # 设置文字(窗口会随着文字大小而改变)
setTrack() # 控件追踪(自动出现在控件的周围)
# ----全新的QSS 设置样式例子
BubbleWidget{
qproperty-backgroundColor: rgba(165, 138, 255,200); /*气泡背景颜色*/
qproperty-radius:10; /*气泡圆角大小*/
qproperty-fontSize:12; /*文字大小*/
qproperty-arrowsSize:20; /*气泡小三角的大小*/
qproperty-margin:3; /*文本框个小三角之间的距离*/
}
滑块 ----> 100% 完成
from PyQtGuiLib.core import Slider
信号
valueChanged
滑块 -- Slider API介绍
setValue(int) # 设置进度条的值
setBuffValue(int) # 设置缓冲层的值
setMaxValue(int) # 设置最大值
setHoverIcon(bool) # 设置图标是否具有 hover 效果
# 自定义样式
qproperty-radius 设置圆角
qproperty-bgColor 设置背景颜色
qproperty-buffColor 设置缓冲层颜色
qproperty-flowColor 设置浮动层颜色
qproperty-iconColor 设置图标颜色
qproperty-iconSize 设置图标大小
qproperty-bgHeight 设置背景高度
靠边窗口 ----> 100% 完成
导入方式 from PyQtGuiLib.core import PullOver
靠边窗口 -- PullOver API介绍
pullover() # 设置一个点击显示的按钮,窗口显示的位置,以及缩小后的位置
setEasingCurve() # 设置东西
圆环进度条 ----> 100% 完成
导入方式 from PyQtGuiLib.core.progressBar import CircularBar
圆环进度条 -- PullOver API介绍
# ---信号
valueChange # 进度条变化时触发
# --- 类变量
# 变化的圈
OuterRing # 仅外圈变化
InnerRing # 仅内圈变化
Double # 内外圈一起变化
# 线段的风格
SolidLine # 直线
DashLine # 短线
DotLine # 点
DashDotLine # 短线和点的交替
DashDotDotLine # 短线和两个点的交替
CustomDashLine # 自定义样式(这个必须配合api使用才会生效)
# --- Api
setText() # 设置文本
setOuterStyle() # 设置外圈风格(线段的风格类变量)
setInnerStyle() # 设置内圈风格(线段的风格类变量)
setVariableLineSegment() # 设置变化的线段(这里的参数就前3个类变量)
setValue() # 设置进度条的值0~100
value() # 返回进度条的值
setOuterDashPattern() # 设置外圈自定义线段样式(必须配合CustomDashLine类变量才生效)
setInnerDashPattern() # 设置内圈自定义线段样式(必须配合CustomDashLine类变量才生效)
自定义QSS
CircularBar{
qproperty-color:rgba(100,100,100,255);
qproperty-fontSize:15;
qproperty-outerColor:rgba(100,255,100,255);
qproperty-innerColor:rgba(100,255,100,255);
}
加载进度条 ----> 99%
导入方式 from PyQtGuiLib.core.progressBar import LoadBar
加载进度条 -- LoadBar API介绍
# ---信号
valueChange # 进度条变化时触发
# --- Api
setText() # 设置文本
isHideText() # 设置是否需要显示进度的文字
自定义QSS
LoadBar{
qproperty-color:rgba(100,200,100,255);
qproperty-fontSize:10;
qproperty-outerRadius:20;
qproperty-innerRadius:15;
}
水球进度条 ----> 100% 完成
导入方式 from PyQtGuiLib.core.progressBar import WaterBar
水球进度条 -- WaterBar API介绍
# ---信号
valueChange # 进度条变化时触发
# --- Api
setText() # 设置文本
isHideText() # 设置是否需要显示进度的文字
setBallInterval() # 设置每个数值变化,球产生的个数区间(默认[1,1])
setBallSpeedInterval() # 设置每颗球移动的速度区间(默认[1200,4000])
setBallSizeInterval() # # 设置每颗球生成的大小区间(默认[5,15])
自定义QSS
WaterBar{
qproperty-color:rgba(100,200,100,255);
qproperty-fontSize:20;
/*qproperty-waterColor:rgba(0,255,0,255);
qproperty-waterVatBorderColor:rgba(0,173,0,255);
qproperty-waterVatColor:rgba(0,170,255,255);*/
}
轮播组件 ----> 90%
导入方式 from PyQtGuiLib.core import SlideShow
轮播组件 -- WaterBar API介绍
# ---信号
changeWidget # 切换窗口时触发
# ---- 类变量
# 动画方向模式类变量
Ani_Left
Ani_Right
Ani_Down
Ani_Up
# --- Api
addWidget() # 添加窗口
setCurrentIndex() # 切换到指定窗口
setAutoSlideShow() # 设置自动轮播
removeWidget() # 移除窗口(仅仅只有移除轮播组件,如果需要销毁窗口,需要自己编写代码)
setAinDirectionMode() # 设置动画方向模式(例如:上下方向(SlideShow.Ani_Up,SlideShow.Ani_Down))
setButtonsHide() # 设置隐藏/显示左右按钮(默认显示)
getButtons() # 返回左右按钮对象(可以通过这个方法来重写左右按钮样式)
线性渐变进度条 ----> 99%
导入方式 from PyQtGuiLib.core.progressBar import GradientBar
线性渐变进度条 -- GradientBar API介绍
# ---信号
valueChange # 进度条变化时触发
# --- Api
setValue() # 设置当前进度0-100
setRadius() # 设置圆角半径(默认没有圆角)
setBackGroundColor() # 设置进度条底色
setColorAts() # 设置颜色比重和颜色例如 [(颜色比重0-1,QColor()),...]
appendColor() # 添加一种颜色 (颜色比重0-1,QColor())
removeColor() # 移除一种颜色 (颜色比重0-1,QColor())
getColors() # 返回所有的颜色和比重
# -----
注意,这个进度条不提供文字显示,如果需要请自行编写
标题栏 - ---> 99 %
导入方式
from abandonCase.widgets import TitleBar
标题栏 - - TitleBar
API介绍
# ---- 类变量
# 标题位置
Title_Left
Title_Center
# 缩小,放大,关闭 风格
WinStyle
MacStyle
# --- Api
setTitleText() # 设置标题
setTitleColor() # 设置标题颜色
setTitleSize() # 设置标题字体大小
setAllTitle() # 同时设置,标题,颜色,字体大小
setTitlePos() # 设置标题的位置(例如居中: TitleBar.Title_Center)
setBtnStyle() # 设置 缩小,放大,关闭 按钮的风格(默认: TitleBar.WinStyle)
setAniDuration() # 设置动画的时长(默认300毫秒)
setTitleIcon() # 设置图标(默认会同步任务栏的图标)
setSyncWindowIcon() # 设置是否同步桌面任务栏的图标
updateTitleSize() # 更新标题栏大小
# -------
注意: 图标同步任务栏的效果只在win下才有效果
在Mac设置图标方法, 下面这个设置路径是写在运行程序那里的
app = QApplication()
app.setWindowIcon(QIcon(路径))
状态栏 - ---> 80 % 测试使用中
导入方式
from abandonCase.widgets import StatusBar
状态栏 - - StatusBar
API介绍
# --- Api
addText() # 添加文本,可以设置持续多长时间后消失
addButton() # 添加按钮,可以设置一个点击事件
addWidget() # 添加一个窗口
addTime() # 添加时间
setTimeFormat() # 设置时间到格式(默认: %Y-%m-%d %H:%M:%S)
这里所有添加的功能都可以通过
style
参数来设置样式
流式布局 ----> 99%
导入方式 from PyQtGuiLib.core import FlowLayout
流式布局 -- FlowLayout API介绍
# --- Api
流式布局的和其他布局基本没有什么区别
addWidget()
removeWidget()
# ----------
注意: 在使用 removeWidget() 移除控件的时候,控件会被删除掉
注意: 流式布局 无法 配合 QScrollArea 使用
滚动栏 ----> 90% 测试使用中
from PyQtGuiLib.core import RollWidget
# -- 信号
changed # 左右移动时触发信号,并返回当前子控件
# -- 动画效果
InCurve
OutBounce
CosineCurve
SineCurve
滚动栏 -- RollWidget API介绍
# --- Api
setAniEnabled() # 设置动画是否启用(默认开启)
setAniDuration() # 设置持续时间(默认200)
setAniSpecial() # 设置动画特效(参数就类变量,默认特效:InCurve)
addWidget() # 添加控件
buttons() # 返回两个按钮对象
DynamicTLine ----> 90% 测试使用中
导入方式 from PyQtGuiLib.core.lineedit import DynamicTLine
# --- Api
setPlaceholderText() # 设置提示文字
text() # 获取文本
label() # 返回标题对象
line() # 返回输入框对象
SwitchButton --> 95% 测试使用中
导入方式 from PyQtGuiLib.core.switchButtons import SwitchButton
# --- 信号
clicked # 点击时触发
# --- 类变量
Shape_Circle # 圆形
Shape_Square # 方向
# --- Api
setDefaultState() # 设置默认状态
state() # 返回当前的状态
setShape() # 设置形状
setBgColor() # 设置背景颜色 参数 格式 {"false":QColor,"true":QColor}
setBallColor() # 设置运行球的颜色 格式 {"false":QColor,"true":QColor}
# --------
ColorPalette --> 100% 完成
导入方式 from PyQtGuiLib.core import ColorPalette
# --- 类变量
Rect # 颜色区域为矩形
Wheel # 颜色区域为圆形
# --- 信号
rgbaChange 颜色改变时触发,返回的元组 (r,g,b,a)
nameChange 颜色改变时触发,反正字符串 十六进制颜色名称
clickColor 点击获取颜色按钮时触发,返回的元组 (r,g,b,a)
# --- APi
getRGBA() # 返回当前RGBA颜色
# ----注意类变量必须在类创建传递才可以
Eg:
self.pcolor = PaletteFrame(self,shape=PaletteFrame.Rect)
ListWidget ---> 99%
导入方式 from PyQtGuiLib.core import ListWidget
# 类变量 - 添加/移除窗口时的动画特效
OutBounce
CosineCurve
SineCurve
# ----- Api
setAniEnabled() # 设置动画是否启用(默认开启)
setAniDuration() # 设置持续时间(默认300)
setAniSpecial() # 设置动画特效(参数就类变量,默认特效:OutBounce)
setItemMinHeight() # 设置item的最小高度(默认:30)
addWidget() # 添加 QWidget
removeWidget() # 移除窗口
getAllWidget() # 返回所有窗口