2015年1月1日 星期四

如何在 pyside 的程式裡直接使用 Qt designer 產生的 .ui 檔

Maya 每次更新一個版本都會多塞幾個外掛進去,包括 python 的 package 也是如此。2011版加了 pymel, 2014版則是把 PySide 也裝進去了。在那之前 大家如果要在 maya 裡使用 QT 寫介面就得自己裝 PyQt  或 PySide ,現在既然有內建的就應該好好利用它。


有很多人喜歡使用 Qt Designer 先把介面設計好再 load 進 pyqt/pyside 裡. 但如果每次都要把 .ui 檔轉成 .py 檔 (pyuic4 / pyside-uic)實在是有點麻煩,所以大家通常都想直接 load .ui 檔。pyqt 本身有個 function 叫 loadUi 可以達到這件事 (http://pyqt.sourceforge.net/Docs/PyQt4/designer.html) , 但目前 pyside 好像沒有相對的功能,所以有人在 github 上放了一個 wrapper, 把 PySide.QtUiTools.QUiLoader  包成 loadUi function, 也讓 pyqt  code 可以"無接縫" 的轉換 pyside code.

https://github.com/lunaryorn/snippets/blob/master/qt4/designer/pyside_dynamic.py

大家只需要把這個 module 下載放到自己的 python path 裡 (class MainWindow 以下的 範例程式可以刪掉),就可以像 pyqt 一樣使用 loadUi('mainwindow.ui') 把 ui 檔裡的元件直接匯入 pyside 程式裡。


沒有留言:

張貼留言