如果 Python 硬要写桌面应用,该如何是好? - V2EX
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
slysly759
V2EX    Python

如果 Python 硬要写桌面应用,该如何是好?

  •  
  •   slysly759 2016-10-18 11:16:30 +08:00 11687 次点击
    这是一个创建于 3329 天前的主题,其中的信息可能已经有所发展或是发生改变。

    具体是介样滴:

    原先 PM 将一个用的人少的运维管理页面( web application ) JAVA web 给我用 Python 做,期待做成小工具。后来我想给客户的东西终不能没有界面吧,就用 bat 撸了一个。

    客户:握草,这界面?!还墨绿色?

    :恩,目前是这样

    客户:这滚动的这么像黑客一样?!!

    :。。。

    后来 PM 和我说 你快去弄一个 GUI 。。。

    然后我拿出了 pyqt 用了一个 qt designer 一天花了一个雏形,然后 PM 直接说:丑哭了,你还是把那个 bat 界面改改吧。

    虽然后来结局还蛮好,由于程序功能还简单 没什么逻辑复杂度, bat 界面加上了颜色对比 进度条 和容错等一些优化 客户勉强能够接受。

    但是还是想问问 在这种情况下 咋去弄一个 GUI 最快最省事捏

    备注: 1. 最好能够调用 Python 脚本 2. 学习曲线不要太陡峭 目前就非科班自学水平

    客户:我看人家 VB 就做界面满快的,来来来 你看看这个 QQ 界面不对 是飞鸽界面。。。

    30 条回复    2016-10-19 22:00:14 +08:00
    Geoion
        1
    Geoion  
       2016-10-18 11:25:51 +08:00
    试试 node.js ?
    izoabr
        2
    izoabr  
       2016-10-18 11:26:32 +08:00
    PyQT 很快呀,而且可以 QML ,里面跑 Script ,但我没用过。

    我用 QT 做界面,按钮一定记得设置下图标,看起来就高端一些了。
    kindjeff
        3
    kindjeff  
       2016-10-18 11:26:56 +08:00
    web
    jswh
        4
    jswh  
       2016-10-18 11:35:55 +08:00
    electron
    em70
        5
    em70  
       2016-10-18 11:37:02 +08:00
    应该完全杜绝这种临时抱佛脚的情况,既然问题已经解决,现在有时间就系统学一个做 GUI 的技能,建议 WEB
    SuperMild
        6
    SuperMild  
       2016-10-18 11:51:08 +08:00
    上 electron 吧,这东西的神奇之处(方便之处)在于,你用 html, css, JS 来写界面,其中 JS 的部分,既可以直接操作 dom ,同时也可以直接操作后端(比如直接操作文件、操作数据库),不用配置本地服务器不用开端口,可方便地做成可执行文件扔给别的机器(包括 win 和 mac )。简单的界面用 html 来写多么爽啊!
    jswh
        7
    jswh  
       2016-10-18 11:53:54 +08:00
    @SuperMild 不过,说实话,第一次用来操作数据库、文件之类的,一定会被异步和回调搞晕的,然后还可能要在 promise 上再晕一次。尤其是对于只习惯 python php c 之类的语言的人。
    jswh
        8
    jswh  
       2016-10-18 11:54:49 +08:00
    其实我想到了一个超好的东西。易语言,绝对的学习曲线扁平
    guyskk
        9
    guyskk  
       2016-10-18 12:10:01 +08:00 via Android
    用 bootstrap 做网页版,提供一个命令行工具用来开启服务监听端口。
    chinuno
        10
    chinuno  
       2016-10-18 12:12:39 +08:00 via Android
    用 ironpython 做,直接 vs 里面拉界面应该比较适合
    beilun
        11
    beilun  
       2016-10-18 12:13:21 +08:00
    delphi 啦
    jimzhong
        12
    jimzhong  
       2016-10-18 12:32:59 +08:00
    如果界面比较简单可以用 tkinter
    owlsec
        13
    owlsec  
       2016-10-18 13:29:54 +08:00
    拿.net 写。。。。。
    slysly759
        14
    slysly759  
    OP
       2016-10-18 13:39:55 +08:00
    @izoabr 如果点击按钮 触发执行某一个脚本 能把执行结果返回到 GUI 看见么
    lrh3321
        15
    lrh3321  
       2016-10-18 13:47:06 +08:00
    拿.net 写+1

    重定向下 脚本进程的输入、输出

    或者把原先脚本的工作也给一起做了
    kinghui
        16
    kinghui  
       2016-10-18 14:11:09 +08:00
    PyQt + QML, 想好看就要找专业的帮忙出几张图.
    icedx
        17
    icedx  
       2016-10-18 14:17:40 +08:00
    推荐 C#
    不过貌似不能保证源码不泄露
    C# 不能加普通的壳, 目前的专用加密方案都可以破解

    其实 Python 更容易泄露

    最好的就是 QT 可惜学习周期太长 曲线比较陡峭
    haihan
        18
    haihan  
       2016-10-18 15:12:34 +08:00
    不要造轮子,试试 github : https://github.com/chriskiehl/Gooey
    zhouzhe8013
        19
    zhouzhe8013  
       2016-10-18 15:20:35 +08:00
    我觉得 win 下的 GUI 还是 C#吧,要么做成 web 的.
    verydxz
        20
    verydxz  
       2016-10-18 16:00:25 +08:00
    zhangbohun
        21
    zhangbohun  
       2016-10-18 16:08:25 +08:00 via Android
    快手 aauto ,现在改了个新名太难拼我忘了(-.-)
    应该是最符合你的条件的
    语法不难,标准库挺丰富,可以调用 Python2 和 3 , ide 有类似 vb 拖界面的功能
    izoabr
        22
    izoabr  
       2016-10-18 16:41:44 +08:00
    @slysly759 那就是系统调用层面的事了, os 还是 sys 里面的一个 exec 方法调用的吧
    murmur
        23
    murmur  
       2016-10-18 16:44:55 +08:00
    @icedx 没有不能破解的应用,只看有没有强力的律师团队,比如像 cubase 这样,元素版你随便破解默认没看见,专业版大家都当不能破解请你付费。。。
    越热门的应用被破解的可能性越大,何况这些还都是 c++呢,所以还是想法把一部分逻辑扔到服务器上吧...
    wodemyworld
        24
    wodemyworld  
       2016-10-18 17:14:58 +08:00
    @owlsec .NET +2 , C# winform 最多 2 小时解决战斗
    wodemyworld
        25
    wodemyworld  
       2016-10-18 17:15:44 +08:00
    更何况.NET 还能用 IronPython 调用 winform 。妥妥的
    slysly759
        26
    slysly759  
    OP
       2016-10-18 18:13:53 +08:00
    @Geoion 我觉得吧 当老板看到自己 JAVA 的项目被人另立山头弄了一个 Python web 估计想砍死我,还不如放在信息一体化里面呢。。。心疼老板一分钟
    slysly759
        27
    slysly759  
    OP
       2016-10-18 22:29:00 +08:00
    @jswh 0.0 感谢避坑
    Jackeriss
        28
    Jackeriss  
       2016-10-19 09:44:58 +08:00   1
    Qt 能做的 PyQt 几乎都能做,很多著名软件都是 使用 Qt 制作的,如战网客户端、 Autodesk Maya 、 Google Earth 、 Opera 、 Skype 、 VirtualBox 、咪咕音乐、 WPS Office 还有极品飞车等等,可以说是一个相当完善的图形用户界面开发库。如果你界面丑说明你不会自定义 QSS 样式,这个跟 CSS2 很像。开发速度慢只能说是经验问题,做第一个软件可能稍微慢点,后面会发现基本的结构都差不多,直接修改就能做出更多的。而且 PyQt 是跨平台的,还可以直接通过 py2exe 打包成可执行文件。
    run2
        29
    run2  
       2016-10-19 13:28:39 +08:00 via iPhone
    slysly759
        30
    slysly759  
    OP
       2016-10-19 22:00:14 +08:00
    @Jackeriss thx~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2530 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 15:22 PVG 23:22 LAX 07:22 JFK 10:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86