PySide由Qt的官方團(tuán)隊(duì)--Nokia Qt進(jìn)行維護(hù),集成了Qt和Python的優(yōu)勢(shì)。Python通過(guò)PySide調(diào)用Qt庫(kù),開(kāi)發(fā)Qt程序!Pyside應(yīng)該代表著未來(lái),而且有更Pythonic的API,比如String類(lèi)型直接用Python的內(nèi)置str類(lèi)型,遂選擇了Pyside。
一個(gè)PySide程序員只需要使用簡(jiǎn)單的Python語(yǔ)言就能夠發(fā)揮Qt的所有功能。PySide擁有LGPL2.1版授權(quán)許可,允許進(jìn)行免費(fèi)/開(kāi)源軟件和私有商業(yè)軟件的開(kāi)發(fā)。Matplotlib,PhotoGrabber,Wing IDE,Lucas Chess,F(xiàn)miner等應(yīng)用程序均使用PySide開(kāi)發(fā),另外,PySide Mobility工程還允許python訪(fǎng)問(wèn)Qt Mobile API,這對(duì)你進(jìn)行移動(dòng)開(kāi)發(fā)是很有幫助的。
Pyside開(kāi)發(fā)步驟小記:
1.用QtCreator繪制界面界面
稍微復(fù)雜一些時(shí),用QtCreator繪制界面,擺放控件,比較直觀、方便。界面完成后會(huì)生成一個(gè)Qt的ui文件,其實(shí)就是一個(gè)xml文件,描述了各控件的類(lèi)型、位置及其他一些屬性。
2.用uic.py處理上面生成ui文件
然后用Pyside包自帶的腳本uic.py處理ui文件,生成一個(gè)py文件,然后在Python腳本中import該py文件即可。在命令行里先切換到Pyside包的scripts文件夾,以我機(jī)器上安裝路徑為例,處理命令如下:
[html] view plaincopy
cd C:\Python32\Lib\site-packages\PySide\scripts
uic.py -o e:\testui.py e:\test.ui
最后生成的腳本文件大致如下:
[python] view plaincopy
from PySide import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(562, 566)
self.label = QtGui.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(20, 20, 54, 12))
self.label.setObjectName("label")
self.srcPathText = QtGui.QPlainTextEdit(Dialog)
self.srcPathText.setGeometry(QtCore.QRect(80, 10, 401, 31))
self.srcPathText.setObjectName("srcPathText")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "多媒體信息掃描", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Dialog", "視頻目錄", None, QtGui.QApplication.UnicodeUTF8))
3. 接著,創(chuàng)建一個(gè)窗口類(lèi),繼承上面生成的Ui_Dialog類(lèi)和QMainWindow,這里把窗口類(lèi)命名為:MainWindow,在__init__里調(diào)用Ui_Dialog的setupUi函數(shù)。該類(lèi)大致如下:
[python] view plaincopy
class MainWindow(QMainWindow, Ui_Dialog):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
4. 在MainWindow的__init__里可以處理slot/signal的連接,處理事件。也可在該類(lèi)中添加業(yè)務(wù)相關(guān)的代碼,然后在__main__部分調(diào)用該類(lèi),該類(lèi)的調(diào)用及Qt環(huán)境初始化如下:
[python] view plaincopy
#Main function
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWnd = MainWindow()
mainWnd.show()
app.exec_()
5. 總結(jié),Pyside處理界面繼承了Qt的強(qiáng)大/靈活/方便的特點(diǎn),是Python界面編程很不錯(cuò)的選擇。Pyside的文擋及教程可參考官方教程,使用中遇到不熟悉的Qt的類(lèi)及接口可參考Pyside API Reference