http://firefish.blog.51cto.com/298258/58072/
最近用python幫朋友寫一個讀寫二進制文件的程序,很快就寫好了控制台程序。用過之后感覺不方便,因為涉及到數據檢索,在控制台下執行這樣的操作太痛苦了,於是便有了編寫窗口程序的需求。我也因此開始了我的python gui之旅。
因為用python的時間不長,對其gui編程沒有任何了解,說實話一開始就沒打算用python寫窗口程序,我覺得這不是python的強項。但世界是在變化着的,呵呵,閑話少敘,進入正題。
經過一番google,首先進入我視野的是pyqt和wxPython,pyqt是基於目前比較成熟的商業套件Qt的,並且有比較好的開發環境Eric(正是這一點吸引了我)。於是下載qt、pyqt、Eric,好麻煩哦。總算下完了,執行安裝吧,蹦出來一提示:“需要安裝g++編譯器”。太郁悶了,我不就是想開發一個簡單的窗口程序嘛,至於這么麻煩嘛,放棄!
於是轉向wxPython,下載完成后執行安裝,很快完成。但是卻沒有找到啟動開發環境的地方,反復琢磨才弄明白,wxPython只是提供gui開發的基礎庫,並沒有開發環境。又經過一番搜索找到了幾個基於wxPython的工具:boa、wxGlade、wxWidget。
首先使用boa,這個工具的界面很像delphi,集成了UI設計和代碼編輯,但是好像不太穩定,不定什么時候就Crash了,最要命的還是它的代碼Auto-Complete功能使用的快捷鍵是Ctrl+Space,並且沒有地方進行修改。后果可想而知,除非用菜單進行AC,總不至於讓我修改使用過了N多年的輸入法快捷鍵吧。放棄!
目光轉向wxGlade和wxWidgit,這哥倆不虧都是姓“wx”的,都是只能用來設計UI,不具備代碼編輯功能,因此不能算是IDE,功能好像也都差不多。先裝了個wxGlade,在沒有文檔沒有外援的情況下,使用了一下,就一個體會:“控件簡直沒法定位,沒法用!”。於是又裝了個wxWidgit,感覺好像跟wxGlade差不多,試用了一下就Uninstall了。
轉了一圈也沒有找到個稱手的工具,我的心那是哇涼哇涼的!但是程序還得寫啊,又一番猛search,發現大家對這個wxGlade的評價還挺好,甚至有人推薦使用。看來是我了解不夠,於是又硬着頭皮把我已經卸載的wxGlade請回來,仔細了解這個工具的功能,並且做了些嘗試,發現用起來確實還挺好,控件的定位只要用好sizer控件,還是挺方便的。但有一個問題,中文支持不太好,如果使用過了中文,再次載入設計好的界面文件時會出錯,可能是我了解的還不夠深入吧。
簡單介紹一下wxGlade的使用。
進入程序后,主界面有三個窗口,如下圖所示:

首先點擊控件窗口的第一個圖標,添加一個Frame,接着就可以向新建的Frame中添加控件了。控件的布局使用sizer進行控制,也就是控件窗口里最后兩個控件(即BoxSizer和GridSizer)。
先考慮好界面的布局的大概的樣子,讓后向Frame里添加sizer,把布局搭建出來,每個sizer里可以包含多個solt,一個solt里只能放一個控件,當然sizer里的solt是可以隨時添加和移除的,sizer里也可以包含子seizer。使用過程中多體會試驗就好啦。
界面搭建好后,設置一下輸出路徑,使用快捷鍵Ctrl+G就可以生成py代碼了。執行一下,界面是不是出來了呢。

搭建好的界面可以存成文件,以便進行修改時直接就可以調出來之前的設計。不過修改有一點麻煩,因為在界面搭建好后肯定會增加代碼,這個時候重新生成的代碼,就需要自己手工摳出來新加入的控件的代碼,然后填到程序里。這一點也導致wxGlade只能做一些界面比較簡單的程序,如果結構很復雜,在寫了很多代碼后要修改界面,肯定是很痛苦的事情。
不過話說回來,我覺得如果要開發商業性的桌面程序,py+wxGlade目前還是不能夠勝任的,但如果用來開發一些實用性的小程序,憑着wxGlade的簡單和python的強大、靈活還是很有殺傷力的。
最后秀一下我寫地程序的界面,臭美一下。


本文出自 “江湖” 博客,轉載請與作者聯系!