找回密码
 立即注册
Qt开源社区 门户 查看内容

【PyQt系列一】新手向导QT教程

2019-2-9 13:25| 发布者: admin| 查看: 1128| 评论: 0

摘要: 作者:CGRnDStudio PyQt的知识对于TD来说还是蛮重要的一块内容,这里开个坑。以下代码均脱离CG软件在VS Code中完成测试,使用的是Python27+PySide1.2.4。关于PySide的安装:可以使用pip来安装,在C:\Python27\Scrip ...
作者: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。
-------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了