Pyside 初体验

    最近用Python帮同事写了个小工具,用来解析视频文件信息,后来需要界面,由于对Qt印象不错,就在PyQt与Pyside间权衡。网上搜了一下,Pyside由Qt的官方团队--Nokia Qt中的人开发维护,同Qt一样按LGPL协议发布,可用于私有商业软件,而PyQt虽然更成熟,但它遵循GPL协议,若发布商用软件需购买其商业授权。因此,本人觉得Pyside应该代表着未来,而且有更Pythonic的API,比如String类型直接用Python的内置str类型,遂选择了Pyside。

    Pyside开发步骤小记如下:

    1. 用QtCreator绘制界面     界面稍微复杂一些时,用QtCreator绘制界面,摆放控件,比较直观、方便。界面完成后会生成一个Qt的ui文件,其实就是一个xml文件,描述了各控件的类型、位置及其他一些属性。

     2. 用uic.py处理上面生成ui文件      然后用Pyside包自带的脚本uic.py处理ui文件,生成一个py文件,然后在Python脚本中import该py文件即可。在命令行里先切换到Pyside包的scripts文件夹,以我机器上安装路径为例,处理命令如下:       

cd C:\Python32\Lib\site-packages\PySide\scripts
uic.py -o e:\testui.py e:\test.ui
       最后生成的脚本文件大致如下:

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. 接着,创建一个窗口类,继承上面生成的Ui_Dialog类和QMainWindow,这里把窗口类命名为:MainWindow,在__init__里调用Ui_Dialog的setupUi函数。该类大致如下:

class MainWindow(QMainWindow, Ui_Dialog):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        4. 在MainWindow的__init__里可以处理slot/signal的连接,处理事件。也可在该类中添加业务相关的代码,然后在__main__部分调用该类,该类的调用及Qt环境初始化如下:

#Main function
if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWnd = MainWindow()
    mainWnd.show()
    app.exec_()
        5. 总结,Pyside处理界面继承了Qt的强大/灵活/方便的特点,是Python界面编程很不错的选择。Pyside的文挡及教程可参考 官方教程,使用中遇到不熟悉的Qt的类及接口可参考 Pyside API Reference


你可能感兴趣的:(Python)