Skip to main content

Python version of the qt component library.

Project description

[TOC]

logo

说明

该项目,目前处于开发阶段

python版本需求

3.xxx 以上

python下qt支持的版本

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)
如果你在一个窗口类里面使用则不需要加

QSS 样式解析器(QssStyleAnalysis)

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 目录下

动态样式链接器(StyleLinker)

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)";

组件说明

气泡窗口(BubbleWidget)

气泡窗口  ---> 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; /*文本框个小三角之间的距离*/
}

滑块(Slider)

滑块  ----> 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  设置背景高度

靠边窗口(PullOver)

靠边窗口  ----> 100% 完成
导入方式 from PyQtGuiLib.core import PullOver

靠边窗口 -- PullOver API介绍
pullover() # 设置一个点击显示的按钮,窗口显示的位置,以及缩小后的位置
setEasingCurve() # 设置东西

圆环进度条(CircularBar)

圆环进度条  ----> 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);
}

加载进度条(LoadBar)

加载进度条  ----> 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;
}

水球进度条(WaterBar)

水球进度条  ----> 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);*/
}

轮播组件(SlideShow)

轮播组件  ----> 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() # 返回左右按钮对象(可以通过这个方法来重写左右按钮样式)

线性渐变进度条(GradientBar)

线性渐变进度条  ----> 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()  # 返回所有的颜色和比重

# -----
注意,这个进度条不提供文字显示,如果需要请自行编写

标题栏(TitleBar重写中)

标题栏 - ---> 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(路径))

状态栏(StatusBar重写中)

状态栏 - ---> 80 % 测试使用中
导入方式
from abandonCase.widgets import StatusBar

状态栏 - - StatusBar
API介绍

# --- Api

addText()  # 添加文本,可以设置持续多长时间后消失
addButton()  # 添加按钮,可以设置一个点击事件
addWidget()  # 添加一个窗口
addTime()  # 添加时间
setTimeFormat()  # 设置时间到格式(默认: %Y-%m-%d %H:%M:%S)

这里所有添加的功能都可以通过
style
参数来设置样式

流式布局(FlowLayout)

流式布局  ----> 99%
导入方式 from PyQtGuiLib.core import FlowLayout

流式布局 -- FlowLayout API介绍

# --- Api
流式布局的和其他布局基本没有什么区别
addWidget()
removeWidget() 

# ----------
注意: 在使用 removeWidget() 移除控件的时候,控件会被删除掉
注意: 流式布局 无法 配合 QScrollArea 使用

滚动栏(RollWidget)

滚动栏  ----> 90% 测试使用中
from PyQtGuiLib.core import RollWidget

# -- 信号
changed # 左右移动时触发信号,并返回当前子控件

# -- 动画效果
InCurve
OutBounce
CosineCurve
SineCurve

滚动栏 -- RollWidget API介绍

# --- Api
setAniEnabled() # 设置动画是否启用(默认开启)
setAniDuration() # 设置持续时间(默认200)
setAniSpecial() # 设置动画特效(参数就类变量,默认特效:InCurve)
addWidget() # 添加控件
buttons()  # 返回两个按钮对象

动态标题输入框(DynamicTLine)

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)

控件增强

QListWidget 增强 - ListWidget

ListWidget ---> 99% 
导入方式 from PyQtGuiLib.core import ListWidget

# 类变量 - 添加/移除窗口时的动画特效
OutBounce
CosineCurve
SineCurve

# ----- Api
setAniEnabled() # 设置动画是否启用(默认开启)
setAniDuration() # 设置持续时间(默认300)
setAniSpecial() # 设置动画特效(参数就类变量,默认特效:OutBounce)
setItemMinHeight() # 设置item的最小高度(默认:30)
addWidget() # 添加 QWidget
removeWidget() # 移除窗口
getAllWidget() # 返回所有窗口

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyQtGuiLib-2.8.25.1.tar.gz (209.0 kB view hashes)

Uploaded Source

Built Distribution

PyQtGuiLib-2.8.25.1-py3-none-any.whl (284.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page