标签归档:Pyqt

我爱 Python

哦,别误会了,我说的 Python 不是这玩意,而是一种编程语言。

这几天用 Python 语言完成了一个项目,包括一个数据分析统计模块和一个简陋的 GUI (图形用户界面)模块,大约一千行代码左右。这是我第一次用 Python 写这么大的程序(对我来说算是够大的了)。从这个项目中充分体会到了 Python 语言的强大和易用。

一个语言是否简洁,有多简洁,从它的 hello world 程序中就可以看得出来:

print 'hello world'

在我所接触到的编程语言中,Python 代码最接近自然语言。强制缩进和一种问题只有一种解决办法的思想使得 Python 代码很整齐,看起来和伪代码一样。虽说这样少了自由度,但再也不用去管那些大括号匹配,行末位分号等,你会对此心存感激的。Python 是真正的为人类设计的语言。

Python 是一种动态语言,也就是说没有了编译步骤,代码就是程序,程序就是代码。并且在使用变量时用不着声明,想用就用,不用那么多废话。在使用一个变量时,也不用太考虑类型问题,直接用就是。

Python 有一个涵盖面很广的标准库,很多问题都已经在此解决了。我想如果这个项目我用 C/C++ 语言写的话,那么几乎要自己从新实现这些 Python 标准库就提供的功能。加上 C/C++ 语言的啰嗦程度,估计代码行数要增加一个数量级。

还有一个是 Python 没有指针,不用手动管理内存。Python 内建的内存管理和垃圾回收机制很完善,再也不会遇到莫名其妙的段错误了。

Python 的好处太多了,可以看看维基百科的介绍。

Python 是一门很容易学习的语言,也被推荐为入门者应该学的第一门语言。事实上,如果你是一名有经验的程序员,那么你能在两个小时内学会 Python 语言的语法并写出有用的程序。简明 Python 教程 是一个很不错的学习资料,深入学习的话可以看看 Dive Into Python 中文版Python 的官方网站是你应该常去的地方,也是各种文档资料最多的地方。

Python 可以说是一个很“酷”的编程语言,它被列为黑客应该学习的五中编程语言之一,它的资深使用者几乎都是很厉害的程序员。它被使用的也很广泛,豆瓣网的后台开发语言就是 python, Google 主要使用的三种编程语言也包括 Python.

Python的创始人为吉多·范罗苏姆(Guido van Rossum),关于他还有一段有意思的故事:Guido 去 Google 面试,简历只有一句话:I wrote Python (我写 Python),结果面到第10轮 Google 才明白过来这句话的真正意思。

当然每种编程语言都有它合适的领域,相对来说 Python 是一种开发效率较高的语言,但其运行效率则相对较差,如果和 C 语言写出的同样功能程序相比的话,有时候甚至要慢上几个数量级。在一些项目中,牺牲运行效率来提升开发效率还是很直当的。比如在我的这个项目中,写一个桌面程序,对于用户来说,一毫秒和一秒的反应时间真没什么区别。不过 Python 语言和 C 语言结合的很紧密,一些对效率要求很高的模块可以用 C 语言来写,Python 执行时导入该模块即可。实际上,Python 本身就是 C 语言写的。由于 Python 的代码即程序的特点,所以如果算法需要保密的话,也可以用 C 来写,这样别人就看不到你的源码了。

有很多工具可以将 Python 程序转换为 Windows 可以在不用安装 Python 解释器直接执行的 exe 文件。我根据这篇文章:使用py2exe打包pyqt程序为exe 提供的方法成功将 PyQt 程序打包成了 exe.

另外,Python 语言是一个由社区驱动的自由软件,任何人都可对其做贡献,它的源码也是很好的学习 C 语言资源。

延伸阅读:

每个程序员都应该学习使用Python或Ruby

Zen of Python — 蟒之禅!

PyQT 介绍和一些资源

这几天学习了 PyQt , 照猫画虎的做出了一个图形界面。

Python 是功能很强大的脚本语言,Qt 是跨平台的界面开发语言,二者的结合就是PyQt, 它是 Python 语言的 GUI (图形用户界面)编程解决方案之一,而 QT 是由诺基亚开发的应用软件框架。使用 PyQt 编写程序图形界面可以在不修改代码情况下在很多种平台比如 Windows, Linux 和 MacOs 上运行。

PyQt 官方网站:http://www.riverbankcomputing.co.uk/software/pyqt/intro

安装:

如果你使用的是 Windows, 需要首先安装 Python, 如果你对这篇文章感兴趣的话你肯定已经安装了 Python. 然后到 PyQt 官网上下载一个 Windows 安装包进行安装,注意应根据你安装的 Python 版本号进行选择。 PyQt 的 Windows 安装包已经包含了一份 Qt, 安装的时候注意选择你安装 Python 的目录。

如果你使用的 Ubuntu Linux, 那么已经默认安装了 Python, 运行下面命令就可以自动的安装所依赖的软件包:

sudo apt-get install python-qt4

然后运行命令:

sudo apt-get install python-qt4-doc

安装 PyQt 的文档和示例。

Eric 则是由 Python 开发的一款支持 PyQt 的 IDE, 可以很方便的使用 Qt Designer 设计界面,安装和使用可以看这篇文章:Eric+PyQt打造完美的Python集成开发环境。也许在编写大程序时 IDE 是很有用的,但我更喜欢用一个自己喜欢的文本编辑器手工 Hack.

学习资源:

PyQt Reference Guide

The PyQt4 tutorial

Rapid GUI Programming with Python and Qt

GUI Programming with Python: QT Edition

PyQt – PythonInfo Wiki

不过上面都是英文的,再次证明了学好英文对搞计算机的重要性。中文资料很少,有一个翻译了 The PyQt4 tutorial 的资源:

http://www.czug.org/python/pyqt4/

还有这个:

http://code.google.com/p/pyqt-doc-cn/

http://www.ibm.com/developerworks/cn/linux/l-qt/

在安装好 PyQt 后,程序自带的一些例子也是很好的学习资源。

Windows 中例子位于:python目录Libsite-packagesPyQt4examples

Linux 中例子位于:/usr/share/doc/python-qt4-doc/examples

在编写程序时,查看官方文档很有用,列出了所有模块中对象的可用方法、参数和它继承的对象等

我在使用 QtGui.QFileDialog.getOpenFileName 方法时,遇到如果文件路径中包含汉字时打开文件会出错的问题,估计又是因为该死的字符编码。我没有搜索到解决方法,最后自己试了几次,用如下代码解决了问题。我不知道为什么,但它能正常工作 :-)

fname = str(QtGui.QFileDialog.getOpenFileName(self, u'选择文件',
	'/home', u"ACMi 文件(*.acmi)").toLocal8Bit())
f = open(fname, 'r')

Pyqt 学习成果

今天读了 The PyQt4 tutorial, 学习了一些基本的用法。另外花了两个小时左右的时间,又看了一遍 简明 Python 教程,复习一下 Python 语言。下周要交计算机图形学作业,就拿来练练手。本来想做成一个带菜单的界面,整合到一块,但调试了很久没有成功,就只做了最基本的。做的不是很完美,一些接口不知道怎么用。

今天太晚了,下次再介绍安装、配置和一些资源,睡觉……

Windows 编程学习小记

最近开始忙一个项目,这个项目本来是我一个保研的同学的导师给他做,他把我也拉上了。正好最近开始选毕业设计导师,我就选了这位导师,并且说这个项目可以当作毕业设计来做。嗯……不错,如果这学期搞定下学期学校这边就没事,可以安心去实习了。

这个项目不是太难,需要写一个应用程序:从一个特定格式的文件中读取和分析数据,然后分类统计出来。如果是我自己使用这个程序的话我马上就可以开始动手,估计几天就可以搞定。不过这个程序最终是要给一个教授用的,我不得不考虑人机交互界面了,让他去敲命令是不可能的。他也希望最终程序是那种直观的图形界面,点点鼠标距可以操作的。

继续阅读