爱意满满的作品展示区。
Nanguage

oneFace: 根据 Python 函数同时生成 CLI, GUI 和 Web app 的包

  •  
  •   Nanguage ·
    Nanguage · Mar 21, 2022 · 2564 views
    This topic created in 1528 days ago, the information mentioned may be changed or developed.

    可以通过一个 Python 函数同时生成 CLI, Qt GUI 和 Dash web app 。只需要把函数参数进行类型与范围标记即可,比如:

    from oneface import one, Arg
    
    @one
    def bmi(name: Arg(str),
            height: Arg(float, [100, 250]) = 160,
            weight: Arg(float, [0, 300]) = 50.0):
        BMI = weight / (height / 100) ** 2
        print(f"Hi {name}. Your BMI is: {BMI}")
        return BMI
    
    
    # run cli
    bmi.cli()
    # or run qt_gui
    bmi.qt_gui()
    # or run dash web app
    bmi.dash_app()
    

    上述代码能够产生三种不同的接口:

    CLI Qt GUI Dash web app
    cli qt dash

    其他特性

    • 传入参数类型与范围检查,以及 pretty print
    • 参数类型扩展

    用途与局限性

    以一种非常简单的方式为程序提供接口,比如把函数直接变成 Web app ,提供给不会跑命令行的人使用。局限性是只适合创建简单(没有交互状态)的界面。

    链接

    类似项目

    • Fire: 根据函数生成 CLI 。
    • Gooey: 以 CLI 的方式创建 GUI 。
    8 replies    2022-03-22 10:24:45 +08:00
    JeffersonQin
        1
    JeffersonQin  
       Mar 21, 2022
    有个建议,感觉这个项目想法很好,但是如果用 GPL 授权估计会劝退很多人 .... 比方说我
    l0wkey
        2
    l0wkey  
       Mar 21, 2022 via iPhone
    支持图片或文件选择操作不
    lzs5240
        3
    lzs5240  
       Mar 21, 2022
    Good
    lzs5240
        4
    lzs5240  
       Mar 21, 2022
    @l0wkey 附议 图片 文件 Excel 等
    Nanguage
        5
    Nanguage  
    OP
       Mar 21, 2022
    @JeffersonQin 我会考虑一下的,习惯用 GPL 了
    Nanguage
        6
    Nanguage  
    OP
       Mar 21, 2022
    @l0wkey 文件选择在 Qt 端支持。图片可以通过 path 传入,如果有其他需求可以扩展。
    ipwx
        7
    ipwx  
       Mar 22, 2022
    提个小建议:类型声明用 Arg 挺不友好。。。

    建议考虑用 dataclass 包一层,或者参考 Pydantic 。尽量用内置变量 比如 int 和默认值推断你的界面
    Nanguage
        8
    Nanguage  
    OP
       Mar 22, 2022
    @ipwx 谢谢你的建议!这是一个很好的改进方向
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5254 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 06:02 · PVG 14:02 · LAX 23:02 · JFK 02:02
    ♥ Do have faith in what you're doing.