Skip to main content

No project description provided

Project description

SliderPy

SliderPy 是一个开箱即用、自动布局、支持持久化、跨平台兼容的 tkinter 滑动条管理器,让你用几行代码就能构建专业级的参数调节界面。 基于 tkinter,SliderPy 无需额外依赖即可直接运行。

🌟 核心功能亮点

  1. 一键创建滑动条
  • 通过 add_slider/add_sliders/add_slider_group/add_slider_groups 快速添加带标签的滑块
  • 支持整数、浮点数(通过 resolution 控制精度)
  • 滑块名称自动显示在标签上,实时更新当前值
  1. 自动窗口布局管理
  • ✅ 自动调整窗口高度:每添加一个滑块,窗口自动伸缩以完美包裹内容
  • ✅ 固定宽度 + 禁止手动拉伸:保持界面整洁统一
  • ✅ 启动时自动居中:在屏幕中央打开,提升用户体验
  1. 灵活的事件回调
  • 每个滑块可绑定独立回调函数,响应值变化
  • 回调函数接收字符串值(符合 tkinter 规范),可自由处理
  1. 重置与恢复
  • 🔁 重置为默认初始值:reset_all_sliders()
  • 🔙 重置为最近保存的配置:reset_to_config()
  1. 配置持久化(JSON)
  • 💾 保存当前参数到 JSON 文件
    • 默认保存到用户目录:~/.slider_app/config.json(跨平台)
    • 也支持手动选择保存路径
  • 📂 从 JSON 加载配置
    • 自动裁剪非法值到合法范围
    • 提示缺失/多余参数
    • 可选:将加载的配置设为下次启动默认值
  1. 启动自动恢复
  • ✅ 程序启动时自动加载上次保存的配置
    • 无需用户操作,参数状态无缝延续
    • 配置文件不存在则静默跳过,无报错
  1. 安全与健壮性
  • 🛡️ 防止重复滑块名称:添加时检查唯一性
  • 🛡️ 值范围保护:加载或设置时自动 clamp 到 [from_, to]
  • 🛡️ 异常处理:文件读写错误弹窗提示,不崩溃
  • 🛡️ 中文支持:JSON 使用 ensure_ascii=False,支持中文参数名
  1. 开发者友好
  • 📊 values属性:一键获取所有参数字典,便于调试或集成
  • 🧱 面向对象封装:所有状态和方法集中管理,易于扩展
  • 🧩 模块化设计:可轻松嵌入到更大项目中作为参数面板
  1. 用户交互体验
  • 🖱️ 图形化文件选择对话框(保存/加载)
  • 💬 操作成功/失败均有弹窗反馈
  • 🎨 界面简洁清晰,标签+滑块垂直排列,一目了然

📦 典型应用场景

  • 🎨 图像/视频处理软件的参数调节(亮度、对比度、饱和度…)
  • 🎵 音频合成器或均衡器控制
  • 🧪 科研实验中的超参数调试
  • 🤖 机器人或仿真环境的实时控制面板
  • 🛠️ 任何需要快速构建“数值调节 UI”的 Python 工具

🚀 快速开始

if __name__ == "__main__":
    from pprint import pprint
    import time

    def on_brightness(val):
        print(f"亮度变化: {val}")

    def on_volume(val):
        print(f"音量: {float(val):.2f}")

    def on_target(val):
        print(f"目标变化: {val}")

    def on_iter(val):
        print(f"迭代器值: {val}")
        return f"iter_result={val}"

    app = SliderPy(base_width=500, config_path="./config.json")

    # add sliders
    sliders = (
        SliderConfig("亮度", 0, 100, 1, 70, on_brightness),
        SliderConfig("音量", 0, 1, 0.01, 0.6, on_volume),
        SliderConfig("对比度", 50, 150, 1, 100),
        SliderConfig("色温(K)", 2000, 10000, 100, 6500),
    )
    app.add_sliders(sliders)
    # add slider group
    app.add_slider_group(
        "target",
        (SliderConfig("X", 0, 100, 1), SliderConfig("Y", 0, 100, 1)),
        on_target,
    )
    # add iter slider
    app.add_iter_slider(
        {i: f"Item {i}" for i in range(20)}.items(),
        SliderConfig("iter", 0, 19, 1, 0, on_iter),
    )
    # finalize UI
    app.finish_add()
    # app.run()  # blockingly run the app
    pprint(app.values)

    def periodic_task():
        time.sleep(0.02)  # 模拟其他任务

    app.run(periodic_task)
    pprint(app.results)
    print("应用已关闭。")

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

sliderpy-0.0.2.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sliderpy-0.0.2-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file sliderpy-0.0.2.tar.gz.

File metadata

  • Download URL: sliderpy-0.0.2.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.18

File hashes

Hashes for sliderpy-0.0.2.tar.gz
Algorithm Hash digest
SHA256 21d4acffff07ffcb37dcf3b3275ab2cbc58ad85657283f53994cb6be7c9aad87
MD5 8a1b6c2f9b16f4c9684d8b8d005b7c76
BLAKE2b-256 8a11cf7b0e4f0282aee8a65eb704a74e0c209f191486befa4e68143f52034a22

See more details on using hashes here.

File details

Details for the file sliderpy-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: sliderpy-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.18

File hashes

Hashes for sliderpy-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a3daab146caf04927e61c6293edaa232a3a64daf9a9a52b9bdd0eb71376fcb6b
MD5 b0509e620fd4adeb5980154e4eb14077
BLAKE2b-256 acf0611d9b6945f9a63cff9e8dd979dffe4b03765f1561d711b244025e8658ce

See more details on using hashes here.

Supported by

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