天天看點

python學習——初次接觸(python,wxpython,Boa,py2exe)

前言

長期使用java做web開發,有時候需要做一些小工具的話,優先考慮的一般是寫ant或bat等腳本,因為開發較快,并且很容易內建到IDE中。不過有時候一些桌面程式級别的工具也是需要的,比如說寫一些文檔生成相關的工具等。

這個時候采用java是不太合算的,因為開發效率不高(雖然有netbeans,eclipse上也有swt designer),性能也有一點影響,而且還必須要有JRE的支援。采用.net架構倒是開發效率挺高,而且性能也不錯,但是IDE價格較高,程式無法移植到其他平台,并且也需要有CLR的支援。

沒招,就隻有找找看其他的程式設計語言了。

在網上搜尋了一下,發現Python可能是一個很好的替代品:面向對象的腳本語言,稍微修改一下就可以實作跨平台,有wxPython這種GUI插件的支援,使用py2exe等打包工具打包之後的檔案大小也遠小于同樣功能的java程式,經過某些類似于psyco工具的處理之後,性能也還不錯。缺點也有,就是沒有一個可以媲美visual studio.net的IDE,不過也有Boa Constructor和eclipse插件pydev這樣的工具,應該可以忍受了。

而且python作為google的官方程式設計語言之一,現在在程式設計語言排行榜上排名前10,那麼就肯定是優點勝過缺點的。那麼就先簡單地試用一下總是可以的吧。

斷斷續續的用了幾天時間來了解相關的工具,文法,終于寫出了一個最簡單的GUI程式,并且打成了一個程式包,拷貝到到其他PC上運作成功。雖然中間遇到一些問題,但也學習了很多,是以先寫blog記下來。能幫到其他人就更好了。

工具準備

python現在的最新版是3.1.1,而且3.0之後的版本的文法與之前的版本相比已經有了一定的變更,但是相關的wxpython等還沒有支援到這麼高的版本,為了能夠使用wxpython來編寫GUI程式,隻能放棄新版本了。是以選擇了2.x系列中的最新版:2.6.2,同樣wxPython也選擇了for2.6的版本wxPython2.8-win32-unicode-2.8.10.1-py26。然後下載下傳最新的Boa Constructor:boa-constructor-0.6.1.bin.setup.exe。(下載下傳位址參見參考資料)

按順序依次安裝:python2.6.2 -> wxPython2.8 -> Boa Constructor.

※不過之後因為要使用py2exe打包的原因,把版本下降成了2.5系列。

入門

安裝好之後,就可以直接使用了。python自帶了一個名字叫IDLE的開發環境,不寫GUI程式的話,還是很好用的。打開工具,寫一句print "hello world",敲回車,馬上就可以看到效果了,呵呵,似乎入門很容易。

從網上下載下傳了一份ppt格式的教程,簡單的了解一下基本文法,然後按照教程中的示例代碼練習了一下,就算入門了。相比java和.net的龐大類庫,python算是蠻簡單的,而且本身是動态語言,是以非常的靈活。動态語言是未來的趨勢,多練習點隻有好處。

GUI

雖然IDLE基本上可以滿足簡單的程式,但我的主要目的還是要做GUI程式,是以上手Boa是必不可少的。打開Boa之後一看,界面确實有點簡單,不過GUI程式的必備工具(工具欄,屬性檢視器,編輯器)一應俱全,是以也沒有什麼特别的。隻不過有一點不爽,就是這三個東東并不是像平時使用的IDE那樣內建在一個視窗中的,而是分屬于三個不同的視窗,在使用"Alt + Tab"鍵切換的時候,一次隻能切換一個視窗,很不爽,不知道是從哪裡參照的使用者習慣。

參考這篇文章(Boa constructor簡介 )中的介紹,寫了一個隻有一個button的界面出來。

簡單的步驟如下:

1. 先建立一個wx.App,同時會自動建立一個wx.Frame

2. 通過Editor中的Frame Designer往Frame中添加了一個wx.Panel

3. 跟2類似的步驟往wx.Panel中添加了一個button

4. 在Inspector視窗中,給button增加一個單擊事件

5. 在這個單擊事件的函數的event.skip()前面,增加如下代碼(彈出一個确認視窗)

dlg = wx.MessageDialog(self,   u'yes',

                                   u'You got it~',

                                   wx.OK | wx.ICON_INFORMATION

                                   )

dlg.ShowModal()

dlg.Destroy()

6. 儲存以上代碼,然後按F9運作,就可以看到一個帶button的視窗,點選button又會彈出一個confirm視窗。

OK,至此程式創造成功。

打包

了解了一下,發現有python的打包程式至少有十幾個之多,其中出名的有py2exe,pyinstaller,pypackage。本次學習選用了py2exe。

下載下傳了py2exe-0.6.9.win32-py2.6.exe,安裝上簡單試用了一下。

首先,先在之前用Boa建立的目錄下建立了一個mypy.py檔案,裡面内容為:

from distutils.core import setup

import py2exe

setup(windows=["App1.py"])

然後執行指令:python mypy.py py2exe,出現錯誤。

錯誤資訊如下:

error: MSVCP90.dll : No such file or directory

檢視網友的文章,可以肯定是這一個版本的問題,雖然也有解決的方法,但是并不太好,是以最終選擇了直接安裝低版本,版本低就相對要穩定的多嘛。

于是乎,python-2.5.4.msi,wxPython2.8-win32-unicode-2.8.10.1-py25.exe,py2exe-0.6.9.win32-py2.5.exe全部down了下來,并且把之前的版本都替換了。

再次試用py2exe打包,終于成功的獲得了一個App1.exe和一堆相關的檔案,總檔案大小約14M多,雖然也是很大,不過比起帶JRE的程式來講,還是小的多了,可以忍受。

然後把程式拷貝到其他機器上運作,又出錯了。

錯誤資訊是找不到gdiplus.dll檔案。

神了,這種事情都發生。到機器上搜尋了一下,這個檔案在很多軟體的安裝目錄下都有,在wxpython的目錄下也有的。就是不知道為什麼py2exe就是沒有導出來,無語,看來這個版本也不是完美的。忍了,把guiplus.dll直接拷貝到打包出來的目錄下,然後在其他機器上運作,終于OK了,看來以後這一步手動操作是避免不了的了。

這次就算完整的走了一圈了。可是怎麼看那個exe程式的windows視窗外形的圖示都感覺特别不爽。于是到自己的硬碟上找了一個好看的圖示放到程式的目錄下,然後修改mypy.py的内容如下:

from distutils.core import setup

import py2exe

setup(windows=[{"script":"App1.py","icon_resources":[(1,"A0052345.ico")]}])

執行指令python mypy.py py2exe,OK,exe檔案的圖示被成功地替換了。

呵呵,這個最簡單的GUI程式就算出爐了。

總結

經過這麼一次折騰,終于對python以及python相關的工具有了一些了解。

總的來說,python是一種面向對象的解釋性程式設計語言,近似于僞代碼的文法,還是非常易于學習的。而且作為一種黏合劑語言,它的用途也是非常的廣泛。不過在IDE方面還稍微有點弱,即便是幾個商業版本的IDE,也不是特别讓開發者滿意。

不過我現在的目的就是可以拿來做一些小的帶有界面的工具而已,也不需要太強大的IDE,暫時還是可以滿足的。以後要找機會嘗試一些eclipse + pydev。畢竟,以eclipse的強大,相信這個IDE很有希望成為開源的python IDE中的老大哥。

參考資料:

1. Python_百度百科: http://baike.baidu.com/view/21087.htm

2. python: www.python.org

3. wxpython: www.wxpython.org

4. Boa Constructor: http://sourceforge.net/projects/boa-constructor/

5. 啄木鳥 Pythonic 開源社群: http://www.woodpecker.org.cn/

6. Boa constructor簡介:http://blog.163.com/caodixy/blog/static/50940488200951031431510/

7. Python 應用釋出技術:http://wiki.woodpecker.org.cn/moin/PyExe