V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ChrisFreeMan
V2EX  ›  Python

Kivy 终于更新了,自 2020 年 release 后,这次主要还是针对 MacOS 的 ARM 兼容,请问有人深度用过这个框架吗,体验怎样。

  •  
  •   ChrisFreeMan · 2022-03-09 10:34:00 +08:00 · 3041 次点击
    这是一个创建于 1016 天前的主题,其中的信息可能已经有所发展或是发生改变。
    感觉 Python 的 GUi 框架坑都好多,很多人项目突然就不维护了,或者都是开发着玩玩的,靠爱发电果然走不远。
    11 条回复    2022-03-14 13:07:02 +08:00
    ithz
        1
    ithz  
       2022-03-09 16:38:05 +08:00
    pyqt 吧
    ChrisFreeMan
        2
    ChrisFreeMan  
    OP
       2022-03-09 18:29:26 +08:00
    @ithz 主要是看这个 kivy 支持全平台(包括 IOS/Android )想知道这个东西靠不靠谱,之前试过好几个到头来都掉坑里了
    ClericPy
        3
    ClericPy  
       2022-03-09 21:33:10 +08:00
    kivy 和 beeware... 用过的貌似都没夸它们的, 我就没上手
    ChrisFreeMan
        4
    ChrisFreeMan  
    OP
       2022-03-09 21:37:24 +08:00
    @ClericPy 看来还得去搞 swift 得了,一直因为 XCode 过于巨大而有点拒绝。。看来逃不开了。
    ClericPy
        5
    ClericPy  
       2022-03-09 21:49:49 +08:00
    @ChrisFreeMan
    做 ios 的同学说现在不如以前那么香了. 而且还提到了 flutter 啥的
    ChrisFreeMan
        6
    ChrisFreeMan  
    OP
       2022-03-09 21:54:55 +08:00
    @ClericPy 没事,我就自己弄着玩而已。
    Mocus
        7
    Mocus  
       2022-03-11 18:51:13 +08:00
    用过 Pyqt 和 Kivy ,都 2022 年了 Kivy 的中文支持还是稀烂,如果不是上课要教真的不想学
    上课资料 https://github.com/CP1404/Starter
    还是 Pyqt 香,之前用过 C++版本,上手很快
    没试过 kivy 移动端开发
    ChrisFreeMan
        8
    ChrisFreeMan  
    OP
       2022-03-11 19:05:12 +08:00
    @Mocus 感谢回复,我也不知道为啥你们上课会教 Kivy ,其实中文支持对于我来说不是什么问题,我最关系的还是生产环境下的应用体验。pyqt 没有试过,但是它的商业许可让我觉得很困惑,我玩过很多 python 的 GUI 开发框架 pygame_gui 、pygame-muenu, toga(beeware), tkinter, pyglet ,说实话对它们都挺失望的,它们似乎都是一个试验品的感觉,而且是失败的那种。我现在是觉得 python 可以做很多事情,但是绝大部分事情都做不好的样子,除了上手快和简洁之外。有点失望,我是真心非常喜欢 python ,它是我的教父语言,担心现在真心觉得,还是深入学一学其他的编程语言。
    ChrisFreeMan
        9
    ChrisFreeMan  
    OP
       2022-03-11 19:06:50 +08:00
    @Mocus 错别字有点多见谅,发出去已经晚了,没法更正
    BingoXuan
        10
    BingoXuan  
       2022-03-13 14:28:53 +08:00
    @ChrisFreeMan
    那么多 python 的 gui 方案,我最后选了 pywebview 。毕竟 web 这种文档流编程实在简单。

    说实话,Python 还是很多通点的。比如不支持复杂的匿名函数,不敢恭维的类型系统,一言难尽的 asyncio
    ChrisFreeMan
        11
    ChrisFreeMan  
    OP
       2022-03-14 13:07:02 +08:00
    @BingoXuan 其实 python 的 async IO 现在已经得到很大的改善了,现在最起码用起来比以前方便很多了。

    我这个例子不知道能不能说明你的难处,关于将同步函数包装成异步函数执行。
    ```python
    from http import client
    from urllib import request as url_request
    import time
    import asyncio

    URL = 'http://opendata2.epa.gov.tw/AQI.json'


    async def a_open_url(url: str) -> str:
    loop = asyncio.get_event_loop()
    print('------')
    rst: client.HTTPResponse = await loop.run_in_executor(
    None,
    url_request.urlopen, url
    )
    return rst.read().decode('utf8')


    async def main() -> None:
    start = time.time()
    request_time = 4
    rst = await asyncio.gather(*[a_open_url(URL) for _ in range(request_time)])
    print([len(r) for r in rst])
    print('spend time:', time.time()-start)

    if __name__ == '__main__':
    asyncio.run(main())

    ```

    类型系统的话,说实在的我还没体会到有啥不便之处,配合 mypy 的类型检查,还有 flake8 的语法检查也是够用。基本我没有遇上无法类型注释的情况。

    复杂的匿名函数感觉这个应该和 python 的设计理念冲突吧,因为本来就是靠缩进来区分层级的,所以精简表达很重要,如果加入复杂的匿名函数就会增加代码的复杂维度,纯个人看法。

    最后关于 python 的 gui 编程,我还是先选择其他语言了,至于用 web 的技术去开发桌面 UI 其实用 python 本身的意义就不太大了,因为有更多更成熟,更靠谱的前端技术栈。哎,不过还是会作为我的最佳储备语言了,哪天好起来了还是会快速捡起来的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3480 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.