当前位置: 首页 > news >正文

Qt:创建一套基于HSL颜色体系的颜色库

HSL颜色体系知识见:

https://blog.csdn.net/xulibo5828/article/details/160521898

执行脚本:

# -*- coding: utf-8 -*- # 色相字典 h_dict = { "灰色": "0", "红色": "0", "棕色": "20", "橙色": "30", "橙黄": "45", "黄色": "60", "黄绿": "90", "绿色": "120", "青绿": "150", "青色": "180", "靛蓝": "210", "蓝色": "240", "紫色": "270", "品红": "300", "紫红": "330", } color_str = "# -*- coding: utf-8 -*-\n黑色 = \"hsl(0, 0%, 0%)\"\n白色 = \"hsl(0, 0%, 100%)\"\n" color_names = h_dict.keys() for color_name, h in h_dict.items(): if color_name == "灰色": f = 5 t = 10 else: t = 105 for s in range(5, t, 5): for l in range(5, 100, 5): if color_name == "灰色": color_str = "".join([color_str, f"{color_name}_{l}", f" = \"hsl({h}, 0%, {l}%)\"", "\n"]) else: color_str = "".join([color_str, f"{color_name}{s}_{l}", f" = \"hsl({h}, {s}%, {l}%)\"", "\n"]) with open("colors.py", "w", encoding="utf-8") as f: f.write(color_str) print("颜色文件生成成功")

将会得到一个文件,colors.py:

文件中每个颜色的色彩浓度和亮度每间隔5%创建了一个颜色名,黑白灰色的H(色相)和S(色彩浓度)恒为0,黑白灰颜色名的数字是HSL颜色的"L"(亮度)。其余颜色的数字是"S"(色彩浓度5%-100%)和"L"(亮度5%-95%),比如:红色5_30 = hsl(h=0, s=5%, l=30%)。

  • 使用demo:
from PySide6.QtWidgets import QApplication, QLabel, QWidget, QGridLayout from colors import * # 导入颜色 app = QApplication([]) back_clor = f"qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.3, fy:0.3, stop:0 {绿色95_80}, stop:0.2 {绿色95_50}, stop:1 {绿色95_20})" widget = QWidget() label = QLabel() label.setFixedSize(200,200) label.setStyleSheet(f""" background-color:{back_clor}; border-radius: 100px; """) layout = QGridLayout() layout.addWidget(label) widget.setLayout(layout) widget.show() app.exec()

from PySide6.QtGui import QFont from PySide6.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton from UI.colors import * # 导入颜色 app = QApplication([]) style_sheet = \ f"""QPushButton {{background-color: qlineargradient(x1: 1, y1: 0, x2: 1, y2: 1, stop: 0 {黄色85_85}, stop: 0.15 {黄色85_85}, stop: 0.3 {黄色80_60}, stop: 1.0 {橙黄90_30}); border-top: 3px solid {橙黄85_40}; border-left: 3px solid {橙黄85_40}; border-right: 3px solid {橙黄85_40}; border-bottom: 3px solid {橙黄85_40}; border-radius: 30px; }} """ widget = QWidget() btn = QPushButton("PushButton") btn.setFixedSize(400, 100) btn.setStyleSheet(style_sheet) font = QFont() font.setPointSize(26) btn.setFont(font) layout = QGridLayout() layout.addWidget(btn) widget.setLayout(layout) widget.show() app.exec()

http://www.jsqmd.com/news/712655/

相关文章:

  • 2026年3月最新版:实测靠谱!AI率92%暴降至5%,10款降ai率工具含免费版 - 降AI实验室
  • 智能体框架开发指南:从ReAct模式到生产级Agentic应用构建
  • Windows Defender完全移除终极指南:一键禁用系统安全组件的完整解决方案
  • 2026年小程序商城哪个比较好用?
  • easy-excel fill+模板的情况下 如何合并单元格
  • 外链代发是否有效?独立站买外链必看这3个防坑细节
  • SpringBoot多模块依赖冲突排查与架构优化实战(避坑指南)
  • 走进涠洲岛环岛路,解锁火山海岸原生态风光
  • 气动阀环保的品牌有哪些好用的,无锡华通气动值得选吗 - 工业品牌热点
  • 刷到无数农村帮扶暖心瞬间,藏着最朴素的善意与坚守
  • 如何增加网站外链?实测月增500点击,附发件模板与耗时明细
  • LLM长时上下文管理的KV缓存优化与压缩策略
  • 【图像加密解密】XOR和置乱和Arnold变换图像加解密【含GUI Matlab源码 15385期】
  • 多语言大模型安全漏洞分析与防御实践
  • Speech Seaco Paraformer实战案例:如何用热词功能提升专业术语识别率
  • 常见问题解决 --- 装有系统的固态硬盘错误
  • mapbox popup(动态定位)查询属性方法
  • 2025开源AI智能体框架全景解析与应用指南
  • Docker Remote 未授权访问漏洞修复方法
  • 2026年小程序商城SaaS平台
  • Zeptoclaw:基于DMA的无中断舵机驱动库,释放MCU性能
  • 文件上传漏洞:边界检验的艺术
  • 终极实战指南:iOS 15-16设备激活锁离线绕过完整解决方案
  • 详解CN域名注册:流程、要求、材料及注意事项全解析
  • 二次元插画创作指南:用real-anime-z快速生成角色与宣传图
  • LLM长时上下文处理:双路径压缩与LoRA蒸馏优化
  • Evently:.NET开源事件管理引擎,简化事件驱动架构开发
  • 长短期记忆网络大跨桥梁振动响应时频分解系统【附代码】
  • SonnetDB:.NET 生态下的高性能嵌入式时序数据库
  • 470-510MHz频段无线通信系统设计与CC1100E+CC1190方案优化