這里會介紹如何創建python程序的圖像用戶界面(GUI),也就是那些帶有按鈕和文本框的窗口等。目前支持python的所謂“GUI工具包”的有很多,本文簡要介紹最成熟的跨平台pythonGUI工具包---wxPython。
一. 下載和安裝wxPython
1.1 下載
訪問下載頁面:http://wxpython.org/download.php即可。
要注意以下幾點:
1. 如果是windows系統,應該下載預建的二進制版本,可以選擇支持Unicode或不支持Unicode,除非一定要用到Unicode,否則2個版本的區別不大;
2. 確保所選擇的二進制版本要對應Python版本,比如python2.3對應的wxpython不能用於python2.4;
3. 如果沒有任何版本適合硬件或操作系統,可以下載源代碼發布版;
4. 在下載了wxpyhton之后,強烈建議下載演示版本(demo,它需要獨立安裝),它包含文檔,示例程序和非常詳細的演示分布。
1.2 安裝
安裝過程很簡單,都是自動完成的,一直點“continue”就好了。
安裝完畢之后,建議重新打開IDLE窗口,否則驗證安裝是否成功時會一直提示如下錯誤:
>>> import wx Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named wx
ps:LZ我就是在安裝完之后,忘記重啟IDLE窗口,導致import wx時一直提示這個錯誤,以為安裝失敗了。
導入wx模塊成功的話,不會有其他提示。如下是我的wxPython安裝目錄,請拖到最后查看,最后一個目錄為:'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode':
>>> import sys >>> print sys.path ['D:/python', 'C:\\Python27\\Lib\\idlelib', 'C:\\Python27\\Lib\\site-packages\\wx-2.8-msw-unicode\\wxPython', 'C:\\Python27\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode'] >>> import wx >>>
正如前面一章《模塊和包》中講到的,sys.path中的內容就是告訴解釋器去哪里找模塊。現在wx在sys.path路徑下,證明wx已經被python識別為一個模塊,可以正常使用了。
二.使用
在學習的過程中,我發現一個很好的能夠學習wxPython的網站,跟大家分享一下:http://wiki.woodpecker.org.cn/moin/WxPythonInAction
這里介紹里面講到的一個最基本的wxPython程序:
import wx #導入wxPython包;(必須的步驟) class Frame(wx.Frame): # 定義一個wx.Frame的子類,以便我們更容易控制框架的內容和外觀; def __init__(self,image,parent = None,id = -1, pos = wx.DefaultPosition, title = 'Hello,wxPython!'): #給框架的構造器增加一個圖像參數,后面的應用程序會提供;
#下面是顯示圖像的步驟: temp = image.ConvertToBitmap() size = temp.GetWidth(),temp.GetHeight() wx.Frame.__init__(self, parent, id, title, pos, size) self.bmp = wx.StaticBitmap(parent = self,bitmap = temp) class App(wx.App): #定義一個帶有OnInit()方法的wx.App的子類,這是wxpython應用程序最基本的要求;(必須的步驟) def OnInit(self): (必須的步驟)
#下面是對圖像的處理: image = wx.Image('D:\\python\\wxpython.jpg',wx.BITMAP_TYPE_JPEG) self.frame = Frame(image) self.frame.Show() self.SetTopWindow(self.frame) return True myapp = App() #創建一個應用程序類的實例;(必須的步驟) myapp.MainLoop() #進入這個應用程序的主事件循環;(必須的步驟)
ps:LZ我也才入門wxpython,暫時也就只能分享到這里了。