Python+wxWidgets快速開發案頭小程式

來源:互聯網
上載者:User
    作者:江南白衣 

    充分體驗到知識迴圈再用的好處,原本對Python、wxWidgets沒有接觸的,天黑天亮之間,已經作了一個半成品的傳統型程式出來。

    1.選型
    通常選型之後,都會迫切的告訴別人自認為正確的原因,這時候路過的人就比較不幸了。
    我選Python和wxWidgets,是因為.......

    因為是發布到網上的小程式,要它很小,Java和.Net這兩個還算當紅但要裝虛擬機器的笨傢伙最先out了,而Python在py2exe之後壓成rar才3M,如果有心思還可以弄得更小。
    選wxWidgets是因為它可以通行於Windows,Linux兩個位面,另外Fox也能通用,不過wxWidgets是像SWT一樣用Native Widgets的,在WinXP上比較好看。
    用Python而不是C++,是為了快速開發。當然,心底裡其實是貪好玩。本來喜歡Ruby的文法更純潔一些,可惜wxRuby已經太久沒更新了。

   2.wxWidgets
   所謂GUI架構,萬變不離下面幾點:
   1.架構結構
      拿個HelloWorld一看就懂,又是Application->Frame->Menu 的標準架構。

   2.wxWidgets用法
     來來去去還是Text框,選擇框,按鈕幾個老面孔,在wxPython上把wxPython2.6-win32-docs-demos-2.6.1.0.exe檔下載回來,就有C++版本的API手冊與python版本的每個widgets的Demo Code。

   3.控制項與頁面的Layout
      一種方式是C# Winform和Swing那樣在程式裡產生組件和layout,經曆過SWT手寫代碼畫頁面的折磨,再看到一層又一層的Container代碼(wxWidgets裡是Sizer)已經不覺得麻煩了。也有所見即所得 (WYSIWYG)的工具如BOA,不過畢竟沒有Visual Studio for WinForm那麼好,難以真正使用。
      一種是像Delphi, VC或未來的XAML那樣把控制項和layout記在XML檔案裡。但我沒有用。

  4.事件分發機制
     像 EVT_BUTTON(self,ID_UPLOAD, self.onUpload)這樣的代碼,挺簡單的。

  可見,只要有過GUI編程的經驗,再學wxWidgets 很容易。
  參考書:《Cross-Platform GUI Programming with wxWidgets》
                  《wxPython in Action》

   3. Python 
   手邊放一本Python的參考書,只要對動態語言有點感性認識,對著Sample Code能能猜就猜,猜不到就拿chm版的參考書來索引,也很容易入門。

   最難的地方發生在遍曆目錄,那時候已經有點困了:

for root, dirs, files in os.walk('C:/projects/'):
    print sum(getsize(join(root, name)) for name in files)

    這是什麼見鬼文法阿!!
    原來os.walk('C:/projects") 的傳回值是一個tuple。在C++ Boost庫中接觸過這個概念,平常函數都只能返回一個值,而tuple可以讓你返回多個(這樣就不用利用傳址的參數來返回啦),所以就有了for root,dir,files in os.walk()這樣的句子。
    還有 print join(root,name) for name in files,原來python還有這種把閉包寫在for的前面的簡寫法。

   IDE最後還是用了Eclipse的外掛程式PyDev,畢竟Eclipse看著比較舒服,其他編輯器做得那麼難看,怎麼還好意思收錢。

4.美化介面  
    因為wxWidgets用的是native widgets,不像Delphi,C# 和Swing有專門的look and feel 美化控制項,所以美化的主要方式是為Toolbar和Button配上好看的表徵圖,還有修飾整個軟體的配色。
    推薦Tango一個表徵圖庫:http://tango-project.org/  to make open  source software beautiful...說出了我的心聲啊,"頂尖兒的程式員必有完美主義藝術家之傾向。",目前的表徵圖還不多,迅速更新中。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.