2014年6月12日

使用wxPython開發跨平台視窗程式


wxPythonPython的GUI toolkit,顧名思義,其包裝了知名的C++ GUI toolkit - wxWidget

Python語言擁有簡潔的語法以及豐富的package可以使用,是快速開發跨平台視窗程式的好選擇之一。

安裝Python

Python官方網站下載Python直譯器的安裝檔。 一點進去官方網站就可以看到抖大的下載按鈕。但預設是32bit的版本。
我建議可以到https://www.python.org/download/這頁下載,可以自行選擇32bit或64bit的版本。
安裝好Python直譯器後,可以在console下測試python指令。
若無法執行python指令,記得檢查Python直譯器的可執行檔是否加入環境變數中。

安裝wxPython

wxPython官方網站下載wxPython。
這邊要注意的是,Python直譯器與wxPython必須要同樣是32bit或64bit的版本。
在Windows環境以及Mac OS環境下都有Binaries可以直接執行安裝程式。
若需要自行由Source Code建立wxPython,可以參考:http://www.wxpython.org/BUILD.html

安裝完畢後,進入console下執行python指令, 並輸入:import wx
若沒有出現錯誤,表示wxPython安裝成功。
或是執行以下範例:
#<path_to_python>
# -*- coding:utf-8 -*-
import wx

app = wx.App(False)  # Create a new app, don't redirect stdout/stderr to a window.
frame = wx.Frame(None, wx.ID_ANY, "Hello World") # A Frame is a top-level window.
frame.Show(True)     # Show the frame.
app.MainLoop()

安裝wxPython demo

wxPython有相當多的範例demo程式, 在windows或OS X平台下都可以透過安裝檔安裝demo程式碼。 安裝完畢後,在Python目錄底下可以看到wxPython demo的程式原始碼, 裡面有豐富的範例,大多數也可單一執行; 也可將範例複製到其他有Python直譯器的任何平台執行。

使用pyinstaller建立特定平台可執行檔

pyinstaller可以將python程式轉成特定平台的可執行檔, 執行時更為便利。
而pyinstaller本身也支援Windows, Linux及OS X 等平台。
以下介紹如何使用pyinstaller建立特定平台可執行檔。

在Windows下安裝pyinstaller

安裝PyWin32
Windows環境需要先安裝PyWin32 http://sourceforge.net/projects/pywin32/files/ 可以在SourceForge找到最新的build, 選適合自己平台的安裝檔
使用pip-Win安裝及執行pyinstaller
接著下載pip-Win這個工具。
下載後,直接執行即可。
並輸入:
venv -c -i  pyi-env-name
如下圖:
 會產生一個命令列視窗。




第一次執行時會自動安裝需要的相關套件,待執行完畢後,
在命令列視窗輸入:
pip install pyinstaller
即可安裝好pyinstaller。
爾後,執行pyinstaller時,也需要在此命令列視窗中執行。

在Linux下安裝pyinstaller

安裝pip
首先至pip網站下載get-pip.py
並執行:
python get-pip.py
即可安裝好pip,
接著再執行:
pip install pyinstaller
即可安裝好pyinstaller。

使用pyinstaller

使用pyinstaller建立spec檔案

(提醒:在Windows環境下,以下步驟要在pip-Win產生的命令列視窗中執行)
在產生可執行檔之前,
pyinstaller會先分析python程式碼,並產生spec檔案。
假設有個python程式名為testWx.py,
則執行:
pyinstaller -w -F testWx.py
即會產生一個testWx.spec的檔案。
-w參數表示此python程式是視窗程式,產生的可執行檔在執行時,不要跑出命令列視窗;
-F參數表示產生單一的可執行檔。

使用pyinstaller建立可執行檔

產生了spec檔案之後,
只要執行:
pyinstaller -w -F testWx.spec
即可產生該平台可執行檔。