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.1.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.1-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sliderpy-0.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 479168ce2556c399e1802f9ba6e8f620cae99c4d568132abc154caacaa80979f
MD5 4b959c46cc1154ad567d99b4737d6033
BLAKE2b-256 5272f04508f5fb1c301306152cb0448d9229548a95d162f7f32e07625ac2b4af

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sliderpy-0.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 086b51e6a36a1e8020c76bc81182eaf338711e75cae8683c9132d5735af8b900
MD5 9995f6c93c4e093ceec80c6e3c5b8e6a
BLAKE2b-256 f1f6ed947d31af756476ec33484d9a156bb341f7dc0019c9e197cda4021f2859

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