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

2022-03-21 15:44:37 +08:00
 Nanguage

可以通过一个 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

其他特性

用途与局限性

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

链接

类似项目

1575 次点击
所在节点    分享创造
8 条回复
JeffersonQin
2022-03-21 17:57:41 +08:00
有个建议,感觉这个项目想法很好,但是如果用 GPL 授权估计会劝退很多人 .... 比方说我
l0wkey
2022-03-21 18:17:37 +08:00
支持图片或文件选择操作不
lzs5240
2022-03-21 18:20:18 +08:00
Good
lzs5240
2022-03-21 18:21:30 +08:00
@l0wkey 附议 图片 文件 Excel 等
Nanguage
2022-03-21 20:17:16 +08:00
@JeffersonQin 我会考虑一下的,习惯用 GPL 了
Nanguage
2022-03-21 20:18:40 +08:00
@l0wkey 文件选择在 Qt 端支持。图片可以通过 path 传入,如果有其他需求可以扩展。
ipwx
2022-03-22 10:17:36 +08:00
提个小建议:类型声明用 Arg 挺不友好。。。

建议考虑用 dataclass 包一层,或者参考 Pydantic 。尽量用内置变量 比如 int 和默认值推断你的界面
Nanguage
2022-03-22 10:24:45 +08:00
@ipwx 谢谢你的建议!这是一个很好的改进方向

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/841875

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX