PyQt Code Generator

Source: PyQtCodeGenerator.zip

每次在撰寫PyQt程式總是要先建立一些必備的程式片段,天性懶惰的我總希望能夠簡化這個步驟,但是又不希望使用以往寫C的模式套用在Python,這樣會有損其結構性,於是我就靈機一動不如來寫個PyQt Code Generator吧!

整個程式碼解開之後包含了以下目錄:

/PyQtCodeGenerator
---/icon
------Folder.png << 圖檔
---Ui_CodeGenerator.py << UI widgets, signal等定義
---CodeGeneratorClass.py << slots和程式功能的實做
---XmlParseHandler.py << 使用SAX來解讀.ui檔案
---PyQtCodeGenerator.py << 主程式

執行範例畫面如下:


整個程式沒有什麼技術深度,只是做一些基本的條件判斷輸出而已,其中稍微特別一點的是使用xml.sax來處理xml結構的檔案,關於xml.sax的資料可以參考下面的網站:
http://docs.python.org/library/xml.sax.html
除此之外你也會發現到程式畫面上有幾個模組是不可選擇的(例如QtUiTools等),有一部分是因為有些modules僅適用於windows環境(如QAxContainer, QAxServer),還有一些則是因為PyQt還尚未支援這些模組,當然你還是透過以下的修改打開這些模組,以QtDBus為例。

在Ui_CodeGenerator.py原始碼裡找到下面這一行:
self.checkBox_dbus.setEnabled(False)
把它改成如下(或者把下面這一行註解掉,甚至刪除掉效果都一樣):
self.checkBox_dbus.setEnabled(True)
PyQtCodeGenerator同時還支援.ui檔案的處理,你可以從QtCreator裡先設計好圖形介面,再由PyQtCodeGenerator裡的UI Type最後一個選項 Load .ui File來載入設計好的ui,最後透過PyQtCodeGenerator整合出一個基本的PyQt程式。PyQtCodeGenerator在小型的project設計能發揮作用,但如果是要設計多層ui介面的整合,那我到要想想還有什麼解決方案了。

PyQt

Official Website:PyQt

有一段時間我試著在Linux底下找尋圖形介面程式開發的解決方案,我試用過效能非常高的Gtk+, 也使試用過平台支援很完善的Qt,當然也玩了一些wxWidget,至於那個平台獨立運行在JRE的Java就不在主要的考量範圍內。Gtk+確實帶來非常好的執行效能,但是使用它來寫GUI猶如在Windows底下使用Win32 API來寫GUI一樣的痛苦,延長的開發時程,大大降低我原本設計的需求。而Qt雖然有QtCreator做為良好的IDE,畢竟它還是以C++為主軸設計,面對運算能力較差的CPU環境裡,編譯過程也會是一種惡夢。最後我決定使用Script語言的直譯特性與widgets資源豐富的Qt整合出來的PyQt作為我在Linux底下
GUI設計的主要開發環境。

PyQt Installation


不同於使用LGPL授權的Qt,PyQt是使用授權較為嚴謹一點的GPLv2/v3,在非商業用途下,這些授權協議並不會對你在設計圖形系統程式上有太大的影響。PyQt基本上使用C++所撰寫出來的,所以在編譯過程中你必須要先裝G++。在編譯PyQt之前,你的系統裡必須要有以下幾個程式,這幾個套件你可以從我先前的文章或者其官方網站上取得編譯資源。
安裝完上述的套件後,我們可以開始正式編譯PyQt了,編譯過程跟一般的程式沒有兩樣,只是configure是使用python來撰寫的,自然要使用python來執行。
python ./configure.py
make
make install

如果你的CPU運算能力並不是很好,這個編譯過程可能會花上你不少時間。編譯完成之後你可以從原始碼裡的examples挑出一些範例來執行,這裡我們執行一個名為stickman的程式(/examples/animation/stickman)


PyQt Resource

至今還沒有一個完整的PtQt Reference,其中原因也可能是因為PyQt幾乎跟Qt是一比一的對應,只是在語法上必須從C++轉到Python上來表示,對於要學習PyQt的人除了藉由pyuic將原先qt裡的ui轉換過來之外,也可以導覽以下的tutorial來學習

http://www.commandprompt.com/community/pyqt/

http://zetcode.com/tutorials/pyqt4/

Vimeo

你也許早已聽過且使用過Youtube,但你可能還不知道網路上還有這麼一個富有許多高質感的影片網站 - Vimeo,有別於以往影音娛樂為主的線上影音網站(Youtube, Hulu),Viemo提供的是一種短片藝術設計,設計者透過音樂與影像來傳達他們的所要表達的意識,歡迎有閒有興趣的人去參觀一下!

Web Desktop - eyeOS

Official Webiste:eyeOS

現今Web Desktop已經不是什麼新科技,但他卻是一個很好的Cloud Computing技術下的實例,目前網路上有不少Web Desktop如eyeOS, Glide OS, G.ho.st等等,這裡我就推崇eyeOS啦!(因為他是用PHP+AJAX開發出來的,並且以AGPL3授權下的開放性原始碼程式),eyeOS提供了一些基本的文件處理,影音應用等功能,下面就是使用eyeOS裡的 Browser瀏覽youtube影片。


或許有一天Web Desktop會改變我們以往使用電腦的習慣。

Qt and Qt Creator

Official Website: qt.nokia.com


在先前已經發布過關於Qt的文章,這裡將以往的資料重新校正更新。
Qt是一個跨平台(Windows, Linux, Mac, Symbian, Maemo)的圖形介面Framework並由知名的手機公司Nokia所支撐,在linux系統底下有不少軟體是以Qt作為圖形介面的開發,例如VLC,SMPlayer等等。透過QtCreator的圖形介面開發工具,可以有效降低開發所需時間,以提昇整體工作效益。

Qt Installation

如果沒有開發上的需要,建議直接下載官方所提供的bin安裝檔,不然手動編譯Qt可是要花上不少時間。

下載位置:http://qt.nokia.com/downloads
非商業用途時選擇LGPL版本下載即可。目前最新的版本為4.6.3,以Linux為例,安裝方式如下:

對下載好的安裝檔增加執行的權限
chmod u+x qt-sdk-linux-x86-opensource-2010.04.bin
執行qt安裝程式
./qt-sdk-linux-x86-opensource-2010.04.bin
安裝完後Qt的主程式會被放置在/opt/qtsdk-2010.04裡,這時你可以視情況將qt的bin連結到.profile裡。
sudo gedit .profile
將Path的變數修改成如下:
PATH="$HOME/bin:$PATH:/opt/qtsdk-2010.04/qt/bin"
重新登入系統即生效。

對於其他語言與Qt搭配的開發環境(如PyQt)在編譯過程可能會需要一些Library,而這邊Library必須是手動編譯Qt才會安裝至系統,但如前面所提,手動編譯Qt實在是太花時間,這些缺少的Library我們就額外安裝吧!
sudo apt-get install libfreetype6-dev libfontconfig-dev libxrender-dev libsm-dev libglib2.0-dev libxext-dev libxext6-dbg x11proto-xext-dev
以往使用qmake的編譯方式筆者我就不推薦再使用,除非你只是單純想簡單測試一下Qt的小程式,否則還是以QtCreator會比較完善一點。這裡還是提供了一個使用傳統qmake來編譯的範例。
Download : QPasswordCheck.zip
下載回去解壓縮後,輸入以下指令來編譯:
qmake -project
qmake
make

執行編譯好的程式畫面如下:


Qt Resource

取得Qt的相關資料除了透過官方的http://qt.nokia.com/developer開發頁面之外,你還可以透過參考Qt的範例來了解如何使用Qt寫圖形介面程式,相關範例可以在/opt/qtsdk-2010.04/qt/demos底下搜尋到。

JDownloader

Official website:JDownloader


一套由Java所撰寫出來的跨平台(正確來說你的系統只要有相符的JRE就可以執行)的檔案下載軟體,他跟一般的Http下載不同的是JDownloader支援眾多的檔案下載空間,例如知名的Rapidshare, Hotfile等空間,透過JDownloader可以有效管理所要下載的檔案,省去一些繁複的下載手續。從官方下載好JDownloader.zip之後(不要使用jd.sh來下載,不然會很慢,不然你可以試著使用PPA來更新),將JDownloader.zip解開,並執行下列設定。

如果你沒有JRE的環境,請安裝sun-java6-jre
sudo apt-get install sun-jave6-jre
接著設定JDownloader資料夾底下的JDownloader.jar,新增執行的權限
sudo chmod +x JDownloader.jar
設定完成,你可以右鍵點選JDownloader.jar使用Java runtime machine來開啟JDownloader了。

[Ubuntu] Squid Proxy

Official Website: Squid
在Linux底下想要建立一個Proxy時可以使用Squid這個套件,一個簡單的設定方式如下:

安裝Squid,Ubuntu 10.04所自帶的版本為2.7,如果需要更新版本可以到官方網站上下載自行編譯
sudo apt-get install squid

至/etc/squid,備份squid.conf設定檔
sudo cp squid.conf squid.conf.bak
編輯squid.conf設定檔
sudo gedit squid.conf
預設port為3128,如果要修改port(約略在1110行左右),請更改http_port的值(假設要更改為8080)
http_port 8080
設定存取控制清單(約略600行的位置),增加網路ip的存取權(假設網段為192.168.1.0/24)
acl myhost src 192.168.1.0/24
設定http存取控制(約略在670行左右)
http_access allow myhost
重新啟動squid,開始使用Squid Proxy Server。
service squid restart
#關於squid的mac address過濾的功能僅限於區域網路,對於廣域網路是無效的。Squid所提供的功能不單單是如此而已,詳細設定部份可以參考Squid 2.7 Online Manuals

Orange - data analysis tool

Installation pip install orange3 Run orange python -m Orange.canvas