-
Recent Posts
Recent Comments
Archives
- December 2013
- November 2013
- March 2012
- February 2012
- December 2011
- November 2011
- October 2011
- August 2011
- July 2011
- June 2011
- May 2011
- March 2011
- February 2011
- January 2011
- October 2010
- August 2010
- July 2010
- May 2010
- April 2010
- March 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
Categories
Meta
友站連結
Tag Archives: wxPython
wxPython自製Control : 用Matplotlib畫圖表的FigurePanel
最近可能會接到一個需要GUI上畫不少圖表的案子,於是就來研究了一下wxPython + matplotlib,前陣子買了wxPython in action,雖然一本1500元大洋讓我心有點淌血,不過這本書真的寫得很棒,讓我對wxPython有更深入的瞭解,如果案子接下來買n本都可以,我個人認為買書來讀是一種投資,所以基本上看上眼的書買起來也不會手軟,接著因為除了畫圖形,也需要用到不少GUI,我把wxPython官方的demo抓下來,裡面每個範例都跑了一次,對於wxPython能做到什麼地步有了更深入的瞭解,越來越覺得wxPython真是酷斃了,很好玩的GUI framework 在這之後,雖然案子還在歸劃的初期,不過我不是很喜歡空等而沒有程式可以寫的感覺,其實在接洽的這段期間就能先完成一些將會用到的東西,像是widget之類的,或寫寫原形來驗證確實可行之類的都很好,所以我就寫了一個用Matplotlib畫圖表的Control : FigurePanel,因為往後在寫GUI都會用到,如果每次都要特地寫來處理這些我會發瘋,當然最好的方法就是包成Control,如此一來所有圖表都可以直接使用,加上可以有統一的行為,例如另存新檔、列印等等,相當方便 什麼是Matplotlib? Matplotlib是一套強大的Python畫圖表用的函式庫,如果不知道他到底可以畫到什麼地步,就可以看他們官網的畫廊,相信看完後就知道它有多強大,幾乎你想得到的圖、想不到的圖,沒看過的圖,他都可以畫,當然,如果裡面沒有你要的圖,或著你要自創圖,當然也可以自己擴增,有了這套函式庫,原本我可能得先花個一個星期還多少時間來建構一套畫圖表的基礎,如今這些時間完全省了下來,這就是使用Open source的好處,沒有這些東西真的不知道要寫到民國幾年 切入正題,我們來看一下FigurePanel的原始碼
開發wxPython的利器 : PyCrust
一直想做的事 最近我在用wxPython開發某些程式,隨著開發的過程中,難免需要一些直接的測試,改動程式碼來進行測式似乎不是很明智的選擇,即使Python是直譯式的語言,每改一次重新啟動整個程式也是一種浪費,而且狀態每次也會重置,於是我開始想,我是否可以寫一個像Half-Life那樣的一個console整合到我的GUI中,如此一來我就可以在開發時直接進行某些測試,對某些特定的模組操作,如此一來開發的效率可以提升,對於程式而言也會更好除錯,但是雖然寫一個console不是什麼太難的事,但也不是什麼太輕鬆的事,為了早點完成程式,於是我就沒有真的去做 直到某本書的出現 : wxPython in action 當有一天我訂的書: wxPython in action終於來了,這本書要1500元,實在是不便宜,但是我認為卻很值得,我在書中發現我以前一直都沒仔細去注意到的東西,PyCrust,在翻過這章節時我驚訝地發現,這不就是我想做的嗎? 一個控制臺,可以讓我操作、觀察、測試我的GUI,而且整合的方法超簡單,只要一行指令 python pywrap.py main.py 在wx.py的package下的pywarp.py會自動找到app並且將PyCrust整合進去,在我程式中執行的畫面就像這樣 在截圖中我利用pycrust將gui的背景換成了紅色,它不止是一款簡單的GUI,因為他是動態載入模組的name space,和一般IDE不同的是,他的自動完成是動態的,一般的IDE只抓得到靜態的成員,但是即然是動態載入又是在執行中,有什麼成員一清二楚,所以基本上自動完成功能感覺非常地強大,但相對的弱點是對於靜態的部份比較麻煩 它除了可以自動整合到現有的wxPython gui程式中,更可以把裡面各個元件分開來獨立使用 所以它可以幹麻? 對我來說,PyCrust將會是像神兵利器般好用的工具,像是開發遊戲之類需要大量的調校,一個console或是動態的機制是免不了的,而console提供了立即且互動式的環境,有了PyCrust,就等於有了現成的console可以使用,在遊戲的開發過程中,開發者可以利用這個console動態地改變各種參數來觀察反應等等,當然開發遊戲只是其中一個應用的例子,即使在一般的GUI中也會是很好用的工具 順帶一提 wxPython in action真的是難得一見的好書,有別於一般的書,它使用問句來當做標題,但是不會因為這樣而零散雜亂,相反的,你可以很正式地看完一次,也可以很快速地掃過一次,當你需要什麼東西時,那些問句可以幫助你很快地找到你需要的東西,豐富的截圖和圖解更讓人不用費心去猜想到底做出來會是什麼樣子,或是想像到底是如何運作,如果要學wxPython,我覺得這本書真的是非常值得推薦,做為工具書,這本也是必備的一本