2012年8月24日星期五

PyQt Sage Aleph Client

在這個多星期,努力學習PyQt,希望寫一個frontend for Sage Aleph server,既可在Windows和OS X上執行,又可作為prototype,為日後寫Objective-C OS X和iOS版本之用。Project已pull上Bitbucket,仍處於半製成品階段,暫時HTTP submit request到Aleph server,然後show web page,還未轉用WebSocket。

用了一段時間後,心得總結如下:
  1. 本來想用PySide,話晒轉咗手,前途有番少少希望,但是build step太複雜而放棄。
  2. PyQt Documentation太少, 只有不齊全的Class Reference和很多仍是C++版本的example。
  3. 為了多個QAction都connect到同一個method,要用QSignalMapper,但並不易用, 為何要這樣轉折的mapping,而不像Cocoa般所有event都有sender parameter,那樣便根本不用signal mapping,而且signal mapping太難用,最後決定用functools.partical解決。
  4. 當多於一個Widget用相同的data時,Model-View是一個很好的解決方法,不用每個Widget populate data,但這個Model-View不同Objective-C的MVC,它是類似於Cocoa的Cocoa Bindings,但可找到的example非常之少,QListView的model是非常難用,至今仍不明currentChangedselectionChanged的分別。
  5. QTextEdit中加入Syntax HighlightAutocomplete的功能十分容易,是值得稱讚的地方 。
  6. 在網上找到的example未必適合最新版本的PyQt4 for Python 3,例如當中若用到QStringQStringListQRegExp等等,都要改用Python的native object和Python的re module

沒有留言:

發佈留言