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
cchange
V2EX  ›  Python

Python有开发桌面程序的开源项目吗? 想参考一下

  •  
  •   cchange · 2013-10-07 01:17:50 +08:00 · 20238 次点击
    这是一个创建于 3848 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Python是脚本语言,是否适合开发桌面程序呢? 工业控制和科学计算用Python不错,当然前提是能驾驭,现在请问大家在win32上有没有比较好的Python项目呢,项目和工艺不限,树莓派上有GUI项目,但貌似不太好参考。

    同时请问大家,在win32/.64上 大家是怎么使用Python的呢?
    32 条回复    2015-06-03 01:03:28 +08:00
    passluo
        1
    passluo  
       2013-10-07 01:24:52 +08:00 via Android
    wxpython
    dropbox就使用了它…(部分)
    nine
        2
    nine  
       2013-10-07 01:24:54 +08:00   ❤️ 1
    本来极力推崇PyQt的
    最近要做一个桌面项目
    装了一下PyQt for QT5
    打个hello world 包几十m 我疯了

    于是试了一下 aauto,感觉很好
    是基于lua的,推荐
    likai
        3
    likai  
       2013-10-07 05:55:53 +08:00 via Android
    @nine 快手是基于lua的?
    loading
        4
    loading  
       2013-10-07 07:06:56 +08:00 via iPhone
    @nine 感谢推荐。aauto可以和python混用吧,可惜只能在windows啊
    davepkxxx
        5
    davepkxxx  
       2013-10-07 08:27:40 +08:00
    PyQt 最近在用这个写一些桌面应用。
    pango
        6
    pango  
       2013-10-07 10:58:29 +08:00
    搭车问一下python做的桌面程序打包成exe时怎么才能减小体积?
    RelativeLayout
        7
    RelativeLayout  
       2013-10-07 12:03:09 +08:00 via Android
    kivy
    rns
        8
    rns  
       2013-10-07 16:43:01 +08:00   ❤️ 1
    对笔记软件/编辑器有兴趣的话可以看看:

    Zim: http://zim-wiki.org/
    ReText: http://sourceforge.net/p/retext/
    Mikidown: https//github.com/rnons/mikidown

    Zim可以在windows下运行,用了PyGtk。mikidown是我写的,用的PyQt。
    rns
        9
    rns  
       2013-10-07 16:44:46 +08:00
    (少了个冒号)
    Mikidown: https://github.com/rnons/mikidown
    Sherlockhlt
        10
    Sherlockhlt  
       2013-10-07 21:35:22 +08:00 via iPad
    @rns

    mikidown我在用,很不错的说,很想不到居然能看到作者
    不过在ubuntu下css没办法显示,我后来改了源码才能显示
    rns
        11
    rns  
       2013-10-07 21:58:38 +08:00
    @Sherlockhlt 我以前在Ubuntu下试过,没发现CSS的问题。能讲讲你改了哪个地方吗?
    Sherlockhlt
        12
    Sherlockhlt  
       2013-10-07 22:17:25 +08:00
    * 运行mikidwon的时候,发觉报错:

    'QToolBar' object has no attribute 'visibilityChanged'

    查看文档发觉visivilityChanged是个函数而不是一个属性对象,于是把报错行注释掉,重写安转,成功运行。

    * 缩进的问题:作者把缩进设置成4个像素,我想本意应该是设成四个空格,故改为

    self.notesEdit.setTabStopWidth(48) # 1space = 12px Sherlock

    * CSS方面我的解决方法是在markdown解析成的html数据前面加上css指定。由于qt必须用绝对地址指定css,在这里我弄了很久才从[stackoverflow](http://stackoverflow.com/questions/2304952/qwebview-not-loading-external-css)上面看到解答。


    def parseText(self):
    htmltext = self.notesEdit.toPlainText()
    return '<HEAD><link rel="stylesheet" href="file:///home/sherlock/mikinotes/github.css" type="text/css"></HEAD>' + md.convert(htmltext)
    Sherlockhlt
        13
    Sherlockhlt  
       2013-10-07 22:18:05 +08:00   ❤️ 1
    @rns

    楼上是我当时搭建写的笔记
    rns
        14
    rns  
       2013-10-07 22:46:02 +08:00
    @Sherlockhlt 非常感谢!
    rns
        15
    rns  
       2013-10-08 00:10:24 +08:00
    @Sherlockhlt 刚才看了一下代码,第1、3两个问题以前的commits里已经解决了。

    第2个问题,我之前确实没意识到是“设置成4个像素”。但你的解决方案并不完美,12px是字体大小,表示的是高度;而一个space的宽度是多少,很难说清楚,与字体有关?
    因此在setTabStopWidth(48)后,一个tab并不等于4个空格的位置。
    Sherlockhlt
        16
    Sherlockhlt  
       2013-10-08 00:27:44 +08:00 via iPad
    @rns
    确实和字体有关,12px其实有点大,改成10px可能会好点
    我是一年前开始用的,没想到问题后面都解决了
    第三个问题,我的方法会导致live mode时不时preview就跳到页首,现在的版本也会有这个问题吗?
    rns
        17
    rns  
       2013-10-08 01:18:14 +08:00
    @Sherlockhlt 嗯,我时不时的会commit两下,比一年前更稳定。现在的版本没有这个问题。
    nine
        18
    nine  
       2013-10-08 03:48:01 +08:00
    @likai 快手基于LAScript LAScript类似于lua的一个子集
    调用的是windows api 打包之后很小巧
    还可以用htmlLayout做界面,十分方便

    @loading 和python混用的话一点意义都没有,图形本身就是基于windows api的,又有标准库、协程等存在。调用python还要打一个大大的python.dll在调用其他库又要n大的dll,还不如直接PyQt

    事实上我们做的东西很少会跨平台,如果短期内没有跨平台需求,不如考虑先用某个单平台的优秀技术快速实现和迭代。
    真正开发水平ok的话,学习一个新技术也是很快的

    我一直做web的,没做过GUI,只看过一段时间PyQt,写过一两个demo
    只研究aauto 4、5天就搞出一些东西来了
    nine
        19
    nine  
       2013-10-08 03:48:19 +08:00
    AAuto编程语言
    ====================================================
    AAuto是专用于桌面软件快速开发的新一代混合型编程语言,
    兼具动态、静态语言优势,语法更可兼容大部分流行语言,学习成本低,开发速度快,并永久免费。
    AAuto是一种动态语言,但是同时支持静态类型开发,下面的代码定义了一个结构体,在这个结构体中可以象静态语言一样使用静态类型,
    又可以象动态语言一样使用动态类型;

    //定义类
    class POINT {
      int x; int y; //静态类型
      func = function(){
        //动态类型
      }
    }

    这种全新的混合编程语言开创了一种全新的编程方式,
    AAuto拥有动态语言轻便、灵活、快速开发的特性,同时又可以象静态语言一样强大,直接支持原生DLL,
    方便的声明API函数,并且可以将AAuto的函数对象转换为C语言兼容的函数指针,即使是外部EXE进程中的函数,
    也可以使用一句代码声明为普通的AAuto函数对象( 原生call支持 )。

    AAuto虽然小,但是支持的接口很丰富,
    可支持标准DLL的stdcall,cdecl,thiscall等调用约定,可以支持C++导出的类对象,
    可以支持com静态动态双接口,象VBS一样原生支持com对象。

    AAuto还可以直接嵌入汇编机器码,C语言,Java,PHP,C#,Python,Javascript,VBScript......等等数量众多的第三方编程语言,
    方便的互调函数,并且这些调用第三方语言的功能模块都是使用AAuto实现,并且开放源码。混合型语言让我们可以体验到激动人心的全新编程方式。

    AAuto可以将硬盘目录,硬盘文件一键嵌入EXE文件,将全部程序包含所有资源生成独立的绿色EXE文件,
    所有文件读写的相关函数自动支持,无需更改代码,AAuto制作的程序不需要安装程序,
    也不需要释放DLL运行库,AAuto制作的程序都是免安装绿色软件。

    AAuto语法优美,最大兼容流行的C系,Pascal语法,并且可以自定义一套自己的语法。
    有其他语言基础的可以轻松上手,学习AAuto以后学习其他编程语言更可事半功倍,AAuto不象其他的一些编程语言,
    在语法风格,函数命名上都保持了良好的兼容性、通用性。

    AAuto原生支持多线程开发,复杂的多线程开发在AAuto中变得非常简单,
    AAuto所有对象先天线程安全,自动解决所有并发问题,标准库提供大量简化多线程开发的辅助支持库。
    例如 thread.command 实现的线程命令订阅模式,为多线程软件开发带来很大的方便。

    AAuto的标准库基本使用纯AAuto源码实现,并且全部开源,
    标准库提供了大量的简化编程的常用函数,涉及到软件开发的方方面面,极大的简化了桌面软件开发过程。


    软件界面快速开发
    ====================================================
    AAuto提供web.form支持库( 开源 ),
    可以创建web窗体加载网页创建web风格的软件界面,网页与本机代码可以直接交互,
    在快手工程向导里,就提供了 WEB UI 的模板。在使用web窗体时,你能感受到AAuto这种混合语言带来的巨大方便,
    较之传统编程语言,AAuto 可以更快更加方便的创建 WEB UI 程序,在AAuto自带的范例中,就有一个多窗口浏览器的范例,
    仅仅使用了一页300行源码就实现了一个功能较完整的多窗口网页浏览器,可以看出使用AAuto极大的简化了Web相关开发技术。

    另外,AAuto提供了web.layout支持库,封装了轻量快速的界面引擎HTMLayout,
    可以使用传统的HTML,CSS技术,更加方便的实现漂亮的界面,而且运行,响应速度极快,官方也提供了大量HTMLayout的范例,教程。
    当然,使用AAuto开发传统界面也非常的方便,AAuto提供可视化开发工具,可以象VB一样(实际上比VB更简单)的通过拖拉控件创建程序。


    快手 - AAuto集成开发环境
    ====================================================
    快手是用于AAuto程序开发的可视化集成开发环境(IDE)。
    面向个人或企业用户,商业或非商业应用,本软件永久免费。快手内置AAuto标准库,
    以及大量范例全部开源。AAuto用户可以自由使用无需付费,使用AAuto制作的软件产品不需要声明使用AAuto开发,免费使用AAuto无任何附加条件。


    AAuto开发历程:
    ====================================================

    AAuto始于2005年开发,
    2007年12月份完成第一个内测版本。
    2010年2月份发布第一个公测版本。
    2011年10月份发布1.0正式版,AAuto标准库开发完成。
    2012年12月份发布2.4版本。

    关于LAScript:
    ====================================================
    AAuto基于LAScript,LAScript始于2004年开始研发,基于开源项目lua,
    LAScript于2004年随模拟精灵推出,于2005年广泛流行。

    当时的一篇评论文章《你必须知道的10种国产编程语言》如此评价LAScript:
    “作为一种准开发工具,模拟精灵有着非常广泛的应用,特别在初学者中十分流行。
    其携带的LAScript语言也随着模拟精灵的广泛传播而逐渐流行。 LAScript作为一个基于Lua语言的子语言,
    已经可以称得上一个真正的现代编程语言,具备了结构化编程和面向对象编程的诸多特性。”

    注:LAScript是一种纯脚本语言,
    脚本语言仅支持动态类型,并不支持静态类型编程,不能直接用于原生开发、不能独立编写应用程序。
    AAuto的重要意义在于让动态语言走出了脚本语言的阴影 -- 在国外只是一个口号时,AAuto已成功实践混合型编程语言。


    关于Lua:
    ====================================================
    Lua 是一个小巧的脚本语言, 其设计目的是为了嵌入应用程序中,
    从而为应用程序提供灵活的扩展和定制功能Lua并没有提供强大的库,这是由它的定位决定的。
    所以Lua不适合作为开发独立应用程序的语言( 中文简介 来源:百度百科 )。

    Lua是基于MIT协议的开源项目,
    可以免费并自由使用于商业或非商业项目, 可以免费并自由使用于开源或闭源项目。
    被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软体及软体的副本。
    被授权人可根据程式的需要修改授权条款为适当的内容。

    注:LAScript,AAuto内核非开源项目,
    MIT无传染性,大家使用AAuto不受MIT协议约束。

    Lua license( http://www.lua.org/license.html )
    ====================================================
    Lua is free software distributed under the terms of the MIT license reproduced here.
    Lua may be used for any purpose, including commercial purposes, at absolutely no cost. No paperwork, no royalties,
    no GNU-like "copyleft" restrictions, either. Just download it and use it.

    Lua is certified Open Source software.
    Its license is simple and liberal and is compatible with GPL. Lua is not in the public domain and PUC-Rio keeps its copyright.

    The spirit of the Lua license is that you are free to use Lua for any purpose at no cost without having to ask us.
    The only requirement is that if you do use Lua, then you should give us credit by including the copyright notice somewhere in your product or its documentation.
    A nice, but optional, way to give us further credit is to include a Lua logo and a link to our site in a web page for your product.

    The Lua language is entirely designed, implemented,
    and maintained by a team at PUC-Rio in Brazil. The implementation is not derived from licensed software.

    Before Lua 5.0, Lua used its own license, which was very close to the zlib license and others, but not quite the same.
    Check the source distribution for the exact license text for each version before Lua 5.0. Nevertheless,
    if you wish to use those old versions, you may hereby assume that they have all been re-licensed under the MIT license as described above.

    Copyright ? 1994–2012 Lua.org, PUC-Rio.
    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    Copyright ? 1994–2012 Lua.org, PUC-Rio.
    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
    INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    likaci
        20
    likaci  
       2013-10-08 08:47:29 +08:00
    不知道快手和ahk对比有什么优劣
    cchange
        21
    cchange  
    OP
       2013-10-08 09:34:45 +08:00
    谢谢大家的回复
    在外出差 不能一一感谢 再次谢谢大家 我再整合下~
    pango
        22
    pango  
       2013-10-08 23:12:16 +08:00
    @nine 非常感谢,我真的不知道还有像快手这么简单易用而又异常强大的东西存在,我感觉我终于找到我要的东西了!!!在windows下做GUI,我可以放弃python了。
    pango
        23
    pango  
       2013-10-08 23:14:46 +08:00
    引用知乎上的一句话来表达我此刻的心情:如果你是一名彻头彻尾的AAU初学者,并且之前从来没有听说过AAU,那么恭喜你,因为你今天发现了一个宝盒。如果你愿意花费几个月的时间打开这个宝盒,你将会收获无数的宝藏。
    http://www.zhihu.com/question/20231109
    nine
        24
    nine  
       2013-10-09 06:09:56 +08:00
    @pango 是的,我现在做的页游的微端,本来打算用pyqt里的webkit的。用for QT5的pyqt 写了个helloworld,打了一下包一看几十m吓残了。印象中之前for QT4的pyqt打包也才4m,不过即使这样体积也是无法接受的。

    后来打算用delphi,不过是过时的技术,落伍的ide,ide里面撤销重做的功能都不全,双击选中单词都不行,实在有点抵触。

    后来突然想起之前忘记在哪看过aauto的推广,当时没心思研究,只看过一眼,以为是跟autoit一样的东西。
    于是跑过去看了一下,基于lua的。坏处是社区有几个激进分子,也有一点点封闭,文档不多。

    但是对于写过 php js ruby python golang shell 等诸多语言hello world且正打算研究lua的我,真是正合我意啊! 灭哈哈哈。

    而且打开软件example 目录真是很多的宝藏,而且lib目录就是标准库,在ide里也可以直接查看,我们可以直接看,他是怎么实现的怎么用的,省却n多文档。

    做成的客户端基本调用远程网页,打包下来只有700多k,太爽了。

    觉得好用的话就一起推广吧。
    nine
        25
    nine  
       2013-10-09 06:21:48 +08:00
    @likaci 不清楚ahk是什么东西

    如果你知道lua是什么机制的话就应该知道快手是个什么东西

    lua是一个小巧的,用来粘合C/C++ 的脚本,解释器非常小
    而快手是一个ide类的集成开发环境,用lua写了一些对底层的封装和一些效果库,并做了高亮和提示功能,还写了一些文档手册

    用快手让我们可以快速的拖拽控件建立winform程序(类似 delphi 和 C#做桌面)。比PyQt的QtDesigner好用(那个每次修改还要先生成xml 再编译成python,很麻烦)。
    还可以使用lua方便的调用windows 底层api,调用的方法可以直接查msdn。


    而且整合了HtmlLayout , 就是说我们可以用html 来布局软件界面,当然打包下来比较大,3.37m大概,不过压缩之后只有1m多

    可以看一下 桌面鲸鱼的这个例子 http://bbs.aau.cn/forum.php?mod=viewthread&tid=8485 ,用HtmlLayout做的
    jasanjun
        26
    jasanjun  
       2013-10-09 16:43:48 +08:00
    @rns 为什么是Python3啊。。 有Python2的版本吗
    cchange
        27
    cchange  
    OP
       2013-10-09 17:10:40 +08:00 via iPad
    再次感谢大家的回复,在外出差,不能一一致谢,请大家继续讨论,看来大家推出了了aau,ahk是autohotkey,
    我想 必须根据类库和工艺决定选择python,lua,ruby,aau,ahk的使用,谢谢大家〜

    是不是这些脚本语言都是非常常用在web程序上,桌面的较少呢?
    g00001
        28
    g00001  
       2013-10-26 07:36:27 +08:00   ❤️ 3
    aauto 虽然有 lua 的基因,但 aauto 并不是 lua。
    快手更加不是用lua写的,快手是用C,C++写的,快手里所有的标准库、范例都是用 aauto 写的。

    这就类似于 C++ 有 C的基因,但 C++ 并不是C。
    AAuto无论是基本语法、设计思想、还是所提供的功能与 lua, LAScript都有巨大的区别。

    在你上面复制的 aauto 说明里也写了,lua,LAScript 都是纯粹的脚本语言,而 aauto 并不是脚本语言,
    aauto虽然可以作为脚本语言使用(动态语言可以动态加载),但 HAS-A 而非 IS-A , 详细的网上的相关的讨论已经很多了。

    如果以研究lua的目的去学习AAuto,这可能是一个美丽的误会。
    你学会aauto并不等于学会了lua,相对来说python可能更接近lua. python里面有ctypes之类的api扩展,lua也有类似的第三方扩展,但lua与python一样,你要写GUI桌面程序一样还是要用到QT之类的第三方的C++的GUI界面库。一样的体积会比较大。

    要做原生的win32开发,这不是简单能调用api就可以。aauto直接支持的调用协议就有 stdcall,cdecl,thiscall,fastcall,regparm(n) 可能比VB之类还要多。aauto中灵活的动态回调、对静态类型的支持种种都是让桌面开发变的快速简洁的原因。

    aauto 其实与 autoit, autohotkey 没有多大的关系,唯一类似的可能是名字里有个 auto,但名字里有 auto的多了,例如 AutoCAD 这是一个绘图工具。

    关于文档少,其实快手文档并不少,“快手6.5MB开发工具,33万字用户手册,67万字API手册....” 论坛有“教程专版”也有非常多的入门教程,教程细到CSS中的一个backgrond属性都写了上万字的图文说明 ..... 。而且 aauto 的库本身就是包含智能提示文档的做的非常全,aauto源码本身都非常简洁,奉行“源码即文档”的原则,而且你也说了:“lib目录就是标准库,在ide里也可以直接查看,我们可以直接看,他是怎么实现的怎么用的,省却n多文档”

    说到论坛有激进的坏人,封闭之类,你并不了解这背后的原因,不了解 aauto 是如何被攻击的,一个免费的编程语言网站会经常被DDOS,一个编程语言作者会经常半夜被手机铃声、短信、呼死你骚扰辱骂,也许如果你是 aauto 作者怕是早就放弃了,回过头去看看其他的国产语言,其他的国产免费软件,又有几个不是每天被喷的,这中间是不是有部份是我们自身的原因造成。

    请不要忘记,
    “如果你是一名彻头彻尾的AAU初学者,并且之前从来没有听说过AAU,那么恭喜你,因为你今天发现了一个宝盒”
    “而且打开软件example 目录真是很多的宝藏......”
    这些惊喜都是免费提供、没有任何附加条件的,别人不是免费了一天两天而是持续多年如一日,这些example很多来自于些激进的坏人们。在国内很多论坛都关闭、限制注册的环境下,aauto 论坛是敞开大门自由注册的,国内很多技术论坛都强制回帖看帖、挣钱看附件源码、甚至付钱看源码,而在 aauto 论坛这一切都是免费的,你甚至不需要注册可以搜索、查阅所有的东西。

    对于那些不求回报帮助我们的人,我们可以宽容他们的不完美,去帮助他们做的更好,国内社区走到哪里都不泛批判与指责的声音,但我们最缺乏的是真诚与友善、宽心的分享,我们需要的是不抱怨的世界。
    cchange
        29
    cchange  
    OP
       2013-10-27 14:53:10 +08:00 via iPhone
    @g00001 看来那句不招人妒是庸才所言非虚啊, 只能期望作者越来越好了。
    加油!
    谢谢!
    Matrix24
        30
    Matrix24  
       2013-12-30 18:38:09 +08:00
    第一次听说快手,请问快手可以跨平台么?很感兴趣,想了解
    phyng
        31
    phyng  
       2014-01-06 20:15:34 +08:00
    @Matrix24 只能Windows
    cchange
        32
    cchange  
    OP
       2015-06-03 01:03:28 +08:00
    @phyng
    @Matrix24
    开源的特性应该可以迁移

    只是是否值得 我想有别的选择的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2945 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:21 · PVG 11:21 · LAX 20:21 · JFK 23:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.