作者:CGRnDStudio PyQt的知识对于TD来说还是蛮重要的一块内容,这里开个坑。 以下代码均脱离CG软件在VS Code中完成测试,使用的是Python27+PySide1.2.4。 关于PySide的安装: 可以使用pip来安装,在C:\Python27\Scripts文件夹中调用命令行窗口,输入指令安装,如果没有这个文件夹,建议先安装Python27。 .\pip install -U PySide 创建第一个窗口以及按钮的功能实现 import sys from PySide.QtCore import * from PySide.QtGui import * class Class1(QWidget): def __init__(self, *args, **kwargs): super(Class1, self).__init__(*args, **kwargs) def main(self): self.show() if __name__ == '__main__': app = QApplication(sys.argv) class_1 = Class1() class_1.main() sys.exit(app.exec_()) 今天就带大家一步一步来创建自己的PySide窗口 首先我们先定义一个类继承于QWidget这个类,QWidget算是基础的空白窗体之一 第二我们需要覆盖初始化函数,用默认的super就可以达到我们想要的效果 第三我们需要定义一个main的函数(函数名可以自取),笔者习惯用main这个函数名,至于为什么只调用还需要main其实也是习惯使然,2是方便在show之前加入一些其他的功能而可以不需要重新改调用函数 最后就是__name__ == '__main__'的这个判断 如果读者是在maya内使用的话,需要注意去掉 app = QApplication(sys.argv) sys.exit(app.exec_()) 这2句话因为maya内已经内置了QApplication,我们只需要直接调用main函数就可以显示了 至此我们已经看到了我们的第一个窗口,一个空白的窗口(源代码在段落文字之上) 接着我们会创建按钮并实现按钮的功能 # coding:utf-8 import sys from PySide.QtCore import * from PySide.QtGui import * class Class1(QWidget): def __init__(self, *args, **kwargs): super(Class1, self).__init__(*args, **kwargs) self.__init_ui() self.__init_connect() def __init_ui(self): self.main_layout = QHBoxLayout(self) self.main_pb = QPushButton() self.main_pb.setText(u'测试') self.main_layout.addWidget(self.main_pb) def __init_connect(self): self.main_pb.clicked.connect(self.main_pb_proc) def main_pb_proc(self): print 'Hello QT' def main(self): self.show() if __name__ == '__main__': app = QApplication(sys.argv) class_1 = Class1() class_1.main() sys.exit(app.exec_()) 现在我们看到的代码和之前的区别就在于多了3个函数,分别是__init_ui, __init_connect, main_pb_proc 现在一步一步分解代码 首先: __init_ui 一共4行 第一行创建了一个布局,一个横向的布局,他的父物体就是我们之前创建的空白窗体 第二行创建了一个按钮,什么都没有设定 第三行给我们创建的按钮设定了文字,一个让显示器显示出的文字 第四行是告诉我们创建的布局要把按钮放进去,不然按钮没地方可以显示 到这里我们已经能看到按钮了,但是当我们点击的时候是没有任何效果的 接着: __init_connect 一共1行 self.main_pb.clicked.connect(self.main_pb_proc) 把我们创建的按钮的点击的信号去连接一个槽(也可以叫函数对象,至少py可以这样理解) 最后: main_pb_proc 是一个我们定义的函数,而我们点击按钮的时候就是执行的这个函数 现在我们需要在初始化分别调用__init_ui, __init_connect这2个函数,能让我们创建的控件和信号的连接被正常的执行 好了让我们看看成果吧,我的IDE正常的反馈了Hello QT这样的字 下期我带大家进入到maya内部显示QT的界面以及处理QT界面的置顶,工具化和窗口唯一性 下面会附上笔者常用的一些资料网站: http://pyqt.sourceforge.net/Docs/PyQt4/classes.html ------------------------------------------------------------------------- 我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。 ------------------------------------------------------------------------- |