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介面的整合,那我到要想想還有什麼解決方案了。

No comments:

Post a Comment

Orange - data analysis tool

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