粉丝1024获赞5978

我是黑猫,本节我们来讲一下 pyqt 五创建第一个窗口,我们呢使用两种思想,一种呢是面向过程的变成思想,另一种呢是面向对象的变成思想,那么当我们使用面向对象变成思想的时候,我们呢就可以很方便的把我们的 ui 文件直接呢转化成拍摄的文件, 那么自动转换之后呢,那这个呢就是一个类,然后呢我们之后就可以使用啊这种继承的这种面向对象的思想来进行后面的编程。那么下面呢我们再来看一下 p y q t 五的这样一些模块。 p y q t 五呢是由很多个啊这个类还有函数来组成的啊,那我们呢下面呢啊主要是学习这三个模块,一个是 q t core 啊,也就是核心,那这里的模块呢,它是包含了这个非 g u i 的功能设计,那就是没有这个界面,然后呢都是一些比如说文件,文件夹,时间数据流的这样一些操作啊,还有进程和线程。 那么 q t g u i 呢,就是用来处理啊我们的这个界面的,比如说窗口系统时间处理这个图像啊,然后呢还有绘画字体和文字, 然后呢还有这个叫做这个叫 qt veges, 它呢是包含着一系列创建桌面应用的 ui 元素, 这里呢就可以理解为一些组件啊,桌面的一些组件,然后呢还有很多呢其他的这些模块,我们呢只需要简单的了解一下,那后面呢我们之后用到的时候啊,再来进行学习,比如说 q t 这个叫毛 t 眉点啊,也就是多媒体, 那也就是操作一些摄像头等其他功能,然后这个呢很显然 bluetooth 啊,这是蓝牙的设备。好,然后呢是计算机网络好,接下来呢还有 protein position 啊, position 啊,这个呢就是位置, 然后呢下面呢我们就只需要简单的看一下啊,有一个印象,这里呢这些呢列出来的就是 q t 啊,它这个主要的这个功能模块。 好,那这些模块呢,我们呢大概了解过之后,那接下来呢,我们就开始进行啊,这个 p y q t 的一个编程。好,然后呢我们来进入到我们的 p y 叉。 好,这个呢我们叫它,呃,面向过程编程啊,或者说我们叫它 test 零一吧, test 零一, 然后呢我们呢需要 import 啊,先导入这个系统模块,之后呢会用到。好,然后呢呃,我们呢创建这个桌面的啊,那我们呢就使用这个 curity mages 这样一个库。 好,我们呢 from 啊 p y q t 五点儿,然后呢 q t v g 啊,这里呢是包含了各种桌面应用的这样一些元素,然后呢导 导入呢? q application, 然后呢还有 q vigid, 那么这个模块呢,现在呢就已经导进来了,然后呢我们创建这样一个应用的对象 application。 好, q application, 然后呢这里呢是我们的命令行的参数列表, s y s 点 a r g v。 好,那这里呢就是默认的第一个参数,那就是这个程序本身的这样一个路径,把它给传进去。 好,然后呢接下来呢就是创建窗口啊,这里呢我写一下注释, 这两步,看一下叫创建窗口啊,因为框架呢已经封装好了啊,比如说我们的窗口呢叫 window。 好,我们呢直接使用这个 q v g 进行创建,然后上面呢也给他写一个注释啊,创建应用对象。 好,那这里呢,窗口创建完之后呢,我们呢可以给这个窗口呢设置一些,比如说大小啊啊,或者是位置。 呃,然后呢,接下来呢,我们让这个显示窗口先把它显示出来,先用默认的叫显示窗口啊,那就使用 window 点儿瘦。 好,然后呢接下来呢?呃,进入到主循环当中 啊,就是防止这个窗 创建完之后呢,直接退出了啊,这叫应用主循环啊,然后呢我们现在呢,现在运行一下看一看, 运行完就结束了。然后呢进入主循环呢,就是 s y s 点 exit 啊,退出。然后呢 a p p 点啊, e x e c 当然了要加一个下划线。 好,现在呢这个窗口呢就已经出来了,默认呢就是这样一个窗口。好,接下来呢,我们可以啊改变一下它的这个大小啊, window 点 reside 啊,改变大小 啊,比如说六百四百。好,然后呢接下来呢,给他移动到一个位置,相对于我们 这个屏幕的左上角就是零零进行偏移啊。 window 点目,我们开始进行移动,大概在我这写个三百,三百的位置啊,移动完之后呢,接下来呢,再给他设置一个标题啊, window 点 set title, 这叫 set middle title, 设置标题好,黑猫编程 p y q t 五 叫系列教程。 好,然后呢我们就运行一下。好,这里呢就是我们的这个标题。好,嗯,然后呢还有呢, 比如说其他的一些,比如说我们还可以呢啊,设置这个图标等等,在 window 上图标可以显示,但是麦克上图标显示呢,有一些问题,这里呢我就不再展示它了。然后呢,这就是我们的面向过程的编程 啊,写个注释。 p y q t 五啊,第一个窗口程序啊,当然呢,目前的窗口程序呢,我们都是使用我们的纯代码编程 啊,这里呢,我们需要要掌握一下这个基础的知识。呃,然后呢,这里是面向过程的编程思想, 面向过程啊,编程 好,然后接下来呢,我们使用面向对象,面向对象的话呢,我们呢,先来创建这样一个这样一个头文件吧,叫类。呃,这个呢,叫做 kite, 我的 u i 叫 kite u i, 当然了,它是个 python 文件。 p y q t 五的第一个窗口程序啊,这个是面向对向 啊,变成四项。呃,然后呢,这个还是一个 u i 啊 u i 界面儿类啊,那么如何创建这样一个 界面呢?呃,这里呢,我们还是要导入一些内容啊,我们呢,这样 from t y q t 五点儿 q wigis 啊,然后呢,去导入 q visit。 导入完之后啊,我们呢,就创建这样的一个啊,创建这样一个类, 创建一个窗口类, 那这个类的名字呢?我叫它 class, 叫黑猫的窗口,叫猫的窗口啊,呃,然后呢, 但是呢,它要继承 q v g, 这是使用面向对象的这样一种思想啊,然后呢,初始化 in it。 然后呢,这里呢,我们首先要调用这个,因为我是继承,我先调用副类的啊, super 点 uni。 然后呢,下面呢,我再来写上一个自定义的 d e f 啊,我的 uni 它 u i 啊,这里呢,先 pass 掉 好,然后我们再写上面的。呃,副类的构造函数已经有了。之后呢,我们再来调用自己的,因为自动会执行啊,叫 unit ui, 这下面是默认的,他说他有一个这个使用啊,这个 unit ui 呢,也已经有了,有了之后呢,我们就 set up 点 这里,大家可以看到,其实呢, self 就是拿到我的这个 window 对象了,呃,然后呢, self 点 reset 啊,比如说六百和四百, 好,然后呢, self 点目,我要移动,移动到三百,三百,好,然后呢,这个叫 self 点 set size window title。 之前呢,这是一种面向,对啊,面向过程的编程思想,现在呢是面向对向,然后把它抄过来。 好, 那么在这个里面呢,这里呢,我们思考一下,其实呢,这个 cure vigid 好,它是继承的,然后呢,这里的 self 呢,就是我们之前的啊,这样的一个 window, 这样一个对象。好,然后呢,接下来呢,还有 self 点瘦,我们再把它写成。 好,那这里呢就 ok 了啊, ok 了之后呢,接下来我们还有主窗口程序来调用它,那这个呢,叫做叫做 men window 啊,这叫主窗口 门 window 呢,它是 from 啊, cat ui, 然后呢 import。 这里呢,我们来看一下导入呢,这个叫 ui 文件,但是我要导入的是这个窗口啊,导入一下这个开头运动好,黑猫的窗口, 然后呢,接下来这两段呢,也要倒进来。 好,那么这个 cure vigit 呢,就不用了啊, cure vigit 呢?其实我导入了这个以后,开的 window 啊,就已经有了,这里的 cure vigit 就已经导进来了。好,然后呢,接下来呢,我们创建一个调用窗口的方法。 好,那我们定义一个,比如说打开啊, open cat 运动 好,然后呢,这里呢,就是 a p p 等于 q opplication 啊,先把它写上 s v s 点 a r g v, 好,创建这样一个应用对象, 然后呢,我们如何去创建我们的这个?呃,第一个这样一个窗口呢? 好,那就是 window 啊,它等于什么啊?我们之前的累啊,叫什么名字呢?叫做 kite window, 我把它给写上。好,这样的话就已经创建出来了这样一个对象。 好,那这个对象呢?本身就是什么?当我创建完这个对象的时候,其实大家可以考虑一下我们这里的 cf, 其实就是我们这个对象本身。好,这样的话我们就顺理成章了,就可以往下写了, 主持一下, tight window 里面的 self 就是当前的 w 对对象。 好,那这里呢,是创建完,创建完之后呢?接下来呢,还是设置一下进入主循环啊, e s i t 啊,也就是说这一部分呢? 我们呢,没有就是说啊,一步步学习,这里呢只是说在类里面啊,自动的,他就已经给我们在 in 的初始化里面就已经把这里面的内容自动执行了,因为 in 他里面呢调用了这个叫 saf。 点 这个 unit ui, 这里呢,我们来看一下啊,就是 unit ui, 它已经调用了。 好,那我们呢,再回到这个闷 window。 好,然后呢,接下来呢,就是 这样,如果是主程序的话呢,就是这样,如果 if name, 如果是主程序 name 呢,就是等于这个 name。 好,如果这样的话,我们就 open 这个 kite 运动,然后呢,我们再来运 进行一下,哎,他发现呢是报了错误,我们来找一找 啊,这叫 s y s 一个字, a p p 点 e x e c 这里参数呢,没有写,因为发现它直接退出了,就是有问题的啊。黑猫黑猫编程 p y q t 五系列教程 好,或者说呢,我们现在可以改个名字, 面向过程好, 然后呢下面这个呢?为了和他啊,这保存一下,这个呢?为了哈,为了和他做一个区分啊,在开的 ui 这里啊, 给他来一个面相对象。 好,然后呢再来运行一下。好,那我们本节课的内容呢,就先到这里。

哈喽,小伙伴大家好,欢迎收看刘静编程拍摄高级进阶教程第三期 pyqt 五以及这个于 qt 点赞有的一个对照分析啊,那么我觉得这样一节课程的话呢,对于我们刚开始来学习这个 啊 p y q t 五的话呢,我们应该来说是非常有必要的啊,因为我们有些小伙伴在开始做的时候,实际上就不知道如何把这个 p y q t 五,也就是说这个 q t 的设计的这个环节与我们的这个呃 q t 五 这个 pyqt 五这个代码相对照哎,这里设计的东西跟我们那边的这个代码到底有什么样的关系啊?这一层理解的话是非常非常有必要的啊,那么之前的话我们已经给大家讲过了,我们这个呃如何来搭建 这一个啊?用 py trump 对吧?以及 pyqt 五再加再加上 pyuic 啊,这个实际上就是 pyqt 五啊拍死的一个变异器对吧?当中利用的是 pyqt 五的一个变异模块来将我们的这个 qt 点三个啊,也是这个 qt 的这个界面设计的 ui 编意城,这个什么 py 文件啊, ui 文件编意成 p, 哎,其实说实话应该是一个转换成 py 文件对吧?那么这样一个过程转换过去的代码对应啊,我觉得我们还是非常有必要啊,把它具体其细节分析。那么上一节课的话呢,我们仅仅只是对 qt 五啊做一个简单的了解,然后呢,我们做了一个纯代码的一个分析,对吧?那么我们来了解到的是呃 pyqt 五的一个可视化界面环境 搭建,这是我们之前所学到的啊,然后我们上一节课的话,我们简单的写了一个,这个用 py qt 五啊,呃,写了一个这个代码,这个代码是什么样的代码呢?就是一个 ui 的代码啊,也就说是界面啊,做一个界面 啊,这相比我们之前的这个 tk 啊,来写这个界面,实际上大家看看啊, tk 的话,我们导入的是 tk 的库,对吧?而我们现在写的是 pyqt 五的这样一个界面的话呢,我们导入的是这个 pyqt 五的这个库啊,无非就是导入的库不一样。 然后完了之后呢,我们这个 pyqt 五的话呢,它的功能的话更加的强大啊,因为我们这个 py 啊,它的发展历史应该来说是非常的早啊,可能好像我印象当中可能比加我还要早,所以啊,它的这个 qt 的一个发 qt 的这个发展啊,它的这个底层的这个 c 加加的库啊,实际上是 很早很早的,对吧?他就已经积累起来了。那么 c 家的这个这个库啊, q t 五大家可能还不太清楚啊,他这个 q t 五的这个库啊,他不仅是基于这个,哎,有有应对于这个拍摄啊,拍摄的话我们现在知道啊,一处编影也是处处编影,对吧?也处处都可以使用啊,它是一个解释型的一个代码啊, 那么他可以在苹果平台上面去用啊,可以在我们的这个呃 u 啊啊,这个什么 windows 平台上面去用啊,也可以在我们的其他的 mac 电脑上面去用啊,这些都可以去用。那么这个 pyqt 五的话呢,实践就是这针对于我们的 呃, qt, 针对于我们的这个什么拍摄的这样一个代码来进行翻译的这么一个库,当然啊,既然有针对于拍摄的代码了啊,所以我们的 qt 啊,同样的还有针对于贾瓦的代码,对吧?将我们的界面设计成 是吧?加我的变成加我的东西,对吧?然后呢我们再加我,再进行加我,设计完成之后,我们就可以再进行什么呃,具体的代码一些操作怎么样?这是界界面的一个设计啊, ok, 也就是说我们这个 qt 啊,实际上大大的对我们的这个可视化界面啊的这个设计啊,应该是取到了非常大的帮助啊,他有很多很多的空间去可以简化我们的这个分析啊,简化我们的设计,对吧? 通过我们前面的这几集的代码的话呢,已经给大家了解到了我们这个界面该如何去设计的啊,以及他旁边包含了一大圈的这样一个呃,这个这个呃叫做什么 一大圈的,这这这这这这这空间对吧?这空间他都已经做好的啊,那么我们直接使用就行了,接下去的我们的这些时间的话呢,就是要针对这些空间啊,慢慢慢慢的一个个去进行解析 啊,那么我们呃之前的话,我们知道简单了解过这个 pyc 啊,是怎样去转换成拍神的代码的啊?通过这个拍神的一个呃,拍神拍神编辑器去调用我们这个 pyqt 五的一个代码 啊,一个一个模块啊,来进行转换的,对不对? ok, 那么我们首先我们今天要了解到这个对照分析的时候啊,我们这不是要将这个 pyqt 五的这个代码于 第三个这个代码进行对照分析嘛,对吧?我们如何来进行对照分析呢?我们在对照分析之前,我们先来了解一下一个空的这一个 q t 五的这个 啊,这个界面设计的这个程序对应到我们 qt 五的 piqt 五的这个代码到底是怎么样的,哎,这是非常有必要的,我们要,哎,我们来了解一下这个空的代码到底是怎么样的啊,以及我们这个通过手工去 编写纯代码的这个方式啊,是怎么样的,对不对?我们上一节课的话,已经通过写了第一个这个 pyqt 五的程序,对吧?我们通过利用这个 vigit 啊,利利用这个 vigit 啊 q placation 的话,就是一个进程,这个程序的一个进程,对吧?那么我们呃来写了一个 q vigit 啊, vigit 也就是说是空间啊,这空间的话,窗体里也是可以继承这样一个空间的,对吧?那么 我们来对我们的这个手工纯代码的方式就可以有一个, 呃,写出来这个 gui 的一个界面啊,这是一个空的一个程序,这是我们上节课写的啊,当然还有一种方式就是我们通过这个 qt 点三个啊,这样一个设计来针对性的自己可视化的一个界面规划,对吧?哎,出来的一个界面啊,这个 的话出来之后就是一个类啊,这是我们之前也是了解到的啊,那么我们呃需要这里需要的是要理解啊,我们这个 q t 点三啊, q t v 啊,它是一个基于所有空间的这个积累啊,它是包含窗体、空间按钮、文本等等的这样一个 一个积累啊,这个积累是什么意思呢?其实就是负累对吧?他是包含某个窗体的对吧? ok, 那么我们今天啊,马上来制作一个空的窗体的程序的样子啊,我们通过 qt 点三个的方式来进行制作啊,我们来看一下,有的小伙伴肯定啊,已经在之前的工作当中啊,已经已经啊,已经就是了解到了,对吧?你这个怎么去做啊?那么我们先把这个上一个程序给删删掉,我们重新来制作这样一个界面啊,好了,那么我们来看一下, 这一次我们是第三期啊,我们来制作一个第三期的这个 qd, 第三个, ok, 我们来进行设计啊,设计的话呢,我们有两处,第一处我们是从这个项目地方右键,对吧?然后找到什么就找到这个, 哎, external tours 啊,一个地方啊,然后找到 qd 第三个,对吧? qq 第三个另外一个地方啊,还有一个地方就是在这上面啊,工具栏 托尔攻击栏,托尔攻击栏,这个攻击栏这里呢,有一个叫做 external 啊, torse, 对吧? qt 点三个啊, 那么小伙伴们我们现在的话呢,我个人觉得我们在编写这个 py charm, 在使用的时候呢,我们进来已经进阶到啊,慢慢慢慢从零基础啊,慢慢进阶到高级,到进阶到高级的时候呢,有的小伙伴目前,呃为止可能还在用这个中文,对吧?中文的这个呃,编辑 一起啊,中文的这个开发环境,实际上啊,大家要知道啊,用来用去是这几个英文单词,对吧?所以我建议你也不需要再去把它翻译成中文,当然你也你也可以把它翻译翻译成中文,对吧?当你配置完成之后,也可以把我们之前的这个 教程当中把这个点 b ak 这个扩展名给去掉,我们就可以把这个资源文件变成中文了啊,那么我个人建议的话呢,实际上没有必要再去把它变成哎,中文啊,我们就用英文的开发界面就可以了啊。 ok, 那么这个时候我们来打开它之后,我们发现啊, 我们现在来新建一个设计师的界面,对吧?这是 qt 第三个啊,大家看到啊,我为什么说 qt 第三个啊?实际上是他这个地方是这样的, qt 第三个啊, qt 设计师有个翻译对不对?有个翻译的啊。好了,那么我们来看到我们这个地方的话,有很多的选项, 大家看一下啊,这个选项是一个模板,大家看到没有?左侧的话呢?是就是一个模板啊,风啊,然后 dialogue with 什么? buttons buttons, bottom 是什么意思啊?就是有几个按钮在这下面啊,就是右侧显示出来的一个效果,我们看第二个啊, 呃, dialogue with buttons right 啊,就是在右侧对不对?在右侧的一个按钮, ok, dialogue result buttons, 也就是一个 dialogue 啊, dialog 什么意思啊?是没有我们这个 怎么这个这个这东西的啊,就是没有这种,没有这个这个,呃,这个放大缩小这个东西的,对不对?放大缩小的这样一个按钮的啊, 那么这就是大老哥。我们这呃眼前的这个东西其实也是一个大老哥,对吧?也可以自首,也可以说是一个大老哥啊。好,那么我们下面的话呢,有个叫做 man man window 啊, 门温度,这个门温度的话呢,我们是上节课给大家有用到啊,这个门温度他有什么样的好处呢?他有自带的一些菜单栏,有自带的一些,比如说是,嗯,排序,对吧?比如说中间的一个结构啊,那么这个地方实际上是对我们的 vigit 这个,呃,这个这个空间啊,它的一个 v 九的这个积累的空间,一个一个一个叫做什么?重写啊?重写,他重写了很多个功能,也就是说我们日常的在开发的时候,我们可能更多的会去使用这个 man window 啊,因为利用 man window 的话呢,我们就会 可以有一些就是说他已经制作好的功能,我们就可以直接去使用了啊,这个就是没有 window 的一个好处,对吧?没有 window 的一个好处,那么最根本的还是这个啊, vigit w i d g e t。 啊, vigit w i d g e t。 啊,这个 vigit 又来什么用?这个 vigit 就是一个最基础的一个模板啊,最基础的一个积累,他的一个窗体空间啊,他的一个窗体空间,或者是我们其他的按钮空间,实际上也是积累是继承于他的啊。那么我们右侧的这个地方, 呃,我们的这个界面大小的话,我们他其实有这个啊, q v g a 啊, q v g a 以及 v g a 的一个这个其实是用在哪里的呢? 这些的,呃,方式的话,实际上是它是用在一些那个呃小的,小的设备的啊,就是小的一些平板啊,小的一些, 嗯,这种这种可可嵌入式的设备啊,因为我们 qt 的话,我们杰克 c 加加,我们会做一些嵌入式的开发,会比较多,那么我们这个地方呢,屏幕大小我们使用默认大小。好了,因为我们做的是桌面单的程序啊,桌面单的程序我们可以完全可以用这个默认大小啊, ok, 那么我们此时来 来创建一下,选完之后我们创建一个,创建一个,我们此时的话,他这个地方显示了一个 phone, 也就是创体,对吧?创体创建名称是,呃,昂昂抬头,昂昂抬头的也是还没有被命名啊,我们此时可以命个名保存一下,点击保存, 双体另存,为什么呢?双体就另存,我们这个 ljy 要死。好了啊,我们这个地方另存,为什么呢?我们就另存为,比如说是 alj, 呃,这个叫做 aljy, test 零零三, ok, 就 test 零零三,零零三,好了啊, 了解 ui, test 零零三, ok, 这时候我们就是怎么样?这是一个 ui 窗口,大家看到没有,这是一个 ui 啊, ui, ui 是什么?一个意思啊,这个 ui 其实就是啊,就我们就是一个设计界面嘛,对吧?此时保存就 ok 了,对吧?点击保存。哦, 好了,那么刚刚讲到了一点啊,就是重要的一点就是 q v j, 这个地方是非常重要的啊,这个地方 q 啊,其实都是大写的啊, q v j t, 对吧? q v j, 这个 q 是大写的,大家注意啊,这个地方,呃,在拍摄当中,我们这我们的这个 大小写是非常有区分的,对吧?包括我们 c c 家家啊,包括我们的这个加了啊, c 十二,这些大小写都是有区分的,所以大家呀,在编写代码的时候一定要注意这个大小写的关系啊,大小写的关系, ok, 那么 我们这个地方我们来继续看下去啊,我们现在是一个空的吧,对不对?现在是不是空的窗体啊,空的窗体的大小,我们可以来看一下这个属性啊, 四百乘三百啊的这样一个大小,默认是四百乘三百,我们看到这个属性啊 的一个属性,就是他的专门处理的话,他里面分成 x y 以及这个啊,以及这个宽高,对吧? xy 是指这个从左上角开始的啊,左上角就是说屏幕的左上角,在这个最底方啊,这个地方,屏幕的左上角,这窗体的左上角,这个左上角,我们就是 xy, xy 从零零开始啊,最左上角是一个啊,大家看到没有,我鼠标锁锁点的这个地方左上角是一个零零啊,零零,当我们屏幕的左侧啊,我们就是屏幕的这个水平方向的,就是 x 啊, x x 就有这么多,对不对啊?屏幕的垂直方向啊,就是 y 啊,屏幕的垂直方向就是 y, 那么他的呃, xy 就是这样子来看的啊, xy 就是这样来看的,然后呢,也就是说我的这个窗体啊,待会启动的时候,他会在我们的这个零零 这个点,然后呢,他窗体的宽高就是啊,宽高就是四,宽是四百,高是三百,这是他默认的一个情况啊,绝美区域啊,那么我们把这一个其实可以记一笔啊,那么 在我们的这个什么 q t 设计 t q t 点三个啊,第一 s i g n e 啊,在我们的 q t 点三个啊 啊,设计师界面,设计师界面,我们的看他的属性啊,这个绝美垂这个属性是非常有必要去认识的啊,绝美垂直属性,我们来看一下,呃绝美垂直属性啊, 啊 g e o m e t y 啊,这么去属性,那么这个属性的 x 代表代表啊,代表啊 啊,窗体出现这个叫做出现的位置啊,位置是在啊这个屏幕啊屏幕的左上角,我们看看啊,是不是这样啊,左上角,我们待会来看一下啊啊 y 的话呢,我们啊代表 窗体哎,左上角水平方向的零的位置左上角水平方向方向的零的 啊,零零的位置啊,我们其实这个在以前的这个 vb 的基础的界面啊,就是可视化桌面的开发的时候我们就已经给大家讲到了什么,就已经讲到了我们这个屏幕左上角这个位置其实就是零零,对吧?啊,或者我们一些相对的 一些窗体的一些情况,屏幕啊或者相对窗体的左上角一半也是零零啊,那么窗体出现啊,呃出现的位置是在屏幕左 啊,上脚垂直方向外的话是垂直方向对吧?垂直方向哎方向的 零的位置啊,零的位置, ok, 那么下面还有一个宽高对吧啊默认宽度四百啊,像素啊,这个地方单位应该是属于像素啊,像素 啊,四百啊,那么高度默认高度啊,默认高度是多少?三百,对吧?三百,那么我们来看一下啊,是否是这样子啊,是否是这样子, ok, 我们保留一个空的创体啊,我们把它关闭掉,关闭掉以后我们回到拍全,我们看到这个地方我们刚刚保存的是 ljyt 四零零三,对吧?我们现在来生成一下啊,通过 py iq ipyuic 来生成,对吧?我们点击这个工具啊或工具,然后呢点击这个 xtoner, 然后再点击这个 pyuic, 对不对?此时我们就可以生成同名文件的 py 文件啊,我们来看一下,右键点击生成哦,已经生成了,对吧?大家看到了,呃,他的一个变化,对不对?相同文件名称的一个 啊,扩展名是不一样的,点 py 对吧? py 文件啊,我们上现在双击打开它啊,双击打开它,那么这个的话呢,是我们其实在之前编意的时候为什么是相同名称啊?因为我们在这个地方设置的时候是相同的,大家还是要复习一笔啊。这个地方我们来看一下,呃, pyus 是不是我们用它来进行变异的,因为它毕竟变异的时候我们采用的是拍神变异器啊,拍神变异器,拍神变异器的时候我们调用,首先 m m 是不是猫斗,对不对?我们可以理解成猫斗,我们来调用的是一个模块啊,拍神,首先是拍神变异器啊,拍神变异器,然后我们调用的是, 哎,这个地方其实也可以说是他的一个是解释器啊,解释器对不对?那么我们然后呢就是调用一个模块啊,一个参数,参数是模块的名称 py qt 五下面的 uic 下面的 pyuic, 对吧? 我们将当前文件的名称,也就是发由内当前文件名名称转换成什么呢?目标,哦不就对不对?转换成目标文件是什么呢?杠杠欧,目标文件文件名称 without external, 因为默认的话呢,是 我们是有这个哎 x 腾讯默认情况下,我们这个文件的话,他是有一个这个 u u i 的一个扩展名,对吧?我们转换过来的文件名称是不要让他有有有这个什么扩展名为 ui 的啊, ui 扩展名就不要,所以我们这个地方叫做 without without 什么呢? extent extension 对吧? without extension 啊, without extension。 那么我们后面的话呢,再加上自己手工连接了一个点 py 啊,这是一个他的一个呃叫做什么扩展名啊?手工连接的对吧?手工连接的好,我们现在回到这里,我们刚刚给大家内串命令啊,做了一个简单的解析啊, 那么我们把这串魅力简单解析的话呢,还是写一下啊,因为我们之前好像是没有给大家去去续写过啊。 补充一下,补充命令解析啊。呃,补充,呃充这个什么 p y p y u i c 命令解析 啊,命令解析, ok, 那么我们来看一下,把这一串拿过来,对吧?呃,那么使用这个 python 啊,点 x e 啊,解释器,解释器,然后呢? 呃对吧?呃,这个地方我们就是来说明一下,说明的是什么呢?杠 m 啊,表示 model 调用 某个模块啊,某个模块啊,叫什么模块呢?就是调用的是 pyqt 五下面的 pyuic 模块对吧? pyu 的 uic 模块啊。 啊,这里啊表示什么呢?吊用,吊用 啊,这个模块,对吧?这个模块,那这个模块的话呢,也是我们自己已经下载过的啊,在我们相应的包文件里面,我们是不是之前有这个呃,通过 pip install 然后 pyqt five, 对不对?这样一条命令就可以把它 下载下来,并且进行安装,然后呢我们这个地方杠欧就表示目标文件啊,杠欧啊欧表示啊,目标啊,生成,生成目标, 生成目标文件啊,目标文件。那么呃,这里,呃使用什么呢?使用这个,这个我们 就是表示当前的文件名称啊,这个啊表示,呃,这个文件名称, 这标是什么?什么文件名称呢?就是需要转换的啊,转换的原文件文件名称名称, ok, 那么我们下一条我们来看一下啊杠欧就是表示要生成啊表示, 呃需要生成目标文件,对吧?需要我生成目标文件。那么这里使用这个什么呢?呃相同的文件名称,但不含扩展名啊, 这里使用这个这个表示,哎表示于原文件 相同的啊,余额文件相同的, 哎什么呢?文件名称,但不包含扩展名, 扩展名的目标文件,对吧?那么扩展名什么呢?扩展名,我们扩展名啊,我们通过,哎自己连接连接点 py 啊,那么最终表示, 那么啊最终什么呢?表示什么呢?表示生成的是,嗯,拍森的拍森类型的文件啊文件。那么我们这个 地方呢,给大家还是细细的解说一下啊,是非常有必要的啊,好了,那么大家呢还是要去理解啊,那么我们现在呢就是相同文件文等名称的一个目标的 py 文件,对吧?我们自己来连接的, ok, 我们发现生成的这样一个文件之后,上面的都是一些什么?拍摄当中我们使用这个 啊井号来表示啊,使用这个井号来表示注视,对吧?使用井号来表示注视,那第一行是有作用的啊,第二呢,我们是采用 utf 八编码的形式来进行生成的,对不对? ok, 那么我们来看到啊,这个地方有一个说明啊,就是啊,凤 凤也是,也就说是一个窗体接口,通用的,来自于什么什么,哎,这一个对吧,来自于这个文件的是不是他已经说明了幺九 its 零零三点 ui 的一个,哎,来来 生成的啊,同样的这样一个文件来生成的啊,那么酷瑞的 bi 什么呢? pyqt 五 ui 啊啊,来来,他来创造的啊,他五点一一,三点一,我采用的是这个版本, ok, 那么我们来看一下警告啊,说明一条,我们他这个说明啊,所有的改变。 made in this fire will be lost will be lost will be lost。 这个文件当中啊,我要比老师什么可能,可能会有所啊,生成的这个文件可能会 有所丢失啊,对吧?可能会有所丢失,我也不知道丢失什么东西啊,那的这个东西总归是为了安全起见吧,人家都会去写一句的,对吧,不保证可能生成的东西完全一样啊什么的这种,但是基本上生成都是可以的啊,那么我们主要的呢,还是要看这个地方,这个地方我们上次啊 上一节课程当中已经给大家解释过了,应该来说是解释还是非常详细的啊,那么这个地方首先是调用 from fram 什么酷的名称,对吧? pyqt 五啊, prqt 五,然后呢,导入的是 py, 呃,这个 qt 的一个啊,其实就是导入 qt 的一个核心啊, qt 核心, 这是一个 dll 文件啊, ddll 文件啊,这也是一个,这是这也是一个三个 dl 文件动态链接库的一个啊,类名 啊,那么我们导入的是这三个啊,这三个好,我们可以其实从其实你如果说想要仔细的去看的话呢,你可以去找到你自己的这个呃, pyqt 五的这个文件啊,去对照就行了啊, 那么我们这个地方我们就不继续往下去仔细去看了啊,那么我们来主要是对照我们这个地方后面的这里我们看到啊缝,对不对?首先 他是一个凤啊,凤这个凤其实表示的是一个窗体嘛,对不对?就表示一个窗体啊,但是他这个类的名称首先就生成一个类嘛,对吧?我们上节课是不是给大家讲过生成一个类啊?生成一个类,我们来对照一下啊,这一条代码 类当中是有两个方法啊,对吧?这是一个方法,这是两个第二个方法,对吧?那么来看一下第二第一个方法啊,第一个方法的话其实没多少代码,其实就是赛特啊,不就是赛特吧?赛特 fui 什么意思啊?我们来通过音中音来翻译一下,大家看一下,翻译一下就是, 呃,安装 ui 对不对?是不是?安装 ui 就这么简单吗?那么 ctrl 不就是安装啊,然后 ui 就是界面,对不对?安装 ui 界面那么传入的是一个形式参数,这个形式参数是行餐,是我们是一个缝的一个行餐,嗯,至于 行餐时餐,我们在以前的这个基础课程当中已经跟大家讲过了啊,就要行驶参数这个地方进来都是一个行驶参数啊,行这个行驶参数的话呢,我们这个地方其实是一个,嗯, 这个地方其实是一个,是一个实力化的一个对象啊,这个实力化的一个对象实际上就是一个窗体,对吧?实际上是一个窗体啊,是一个位置这样一个窗体传进来啊,位置这样一个床体传进来,传进来之后我们就可以位置的是什么呢?位置就是这样一个东西啊,就是我们之前的这样一个, 之前的一个创题,对吧?之前就是一个 ui 的之前的一个 q v j t 嘛,对吧? q v j 啊, q v j 的这样一个窗题,我们可以对他进行传录啊,对他进行传录,那么我们这里的话呢?呃,传录的时候我们待会要调用啊,传录成之后才可以调用嘛,对吧?然后我们来把这个地方 set 什么呢? object 啊?内 啊,这个其实就是我们之前的这个名称凤,对吧?哦,不就,那是什么意思啊?对象的名称是凤,这,这个我们有所对应的,我们来看一下啊,对应过来我们的这个地方,我们重新来打开这个工具, external tour 啊, p y 啊,这个这面 q t 第三个,然后我们来,我们通过这个,此时我们不要创建啊,我们通过打开,点击打开, 然后打开这个幺九二 t 四零零三啊, ok, 我们打开之后,我们发现啊,这个地方 object the name 是什么啊?这个目标的名称,也就是这个 form 的名称,这个 form 的名称,对吧?这个 form 的名称是什么呢?就是这个他的这个窗 form, 其实就是窗体的意思啊。 object name 其实就是指这个窗体的名称,就是叫做凤啊, fo 啊, m 啊,我们给他取了个名字叫做凤啊,对吧?那么这个呢?我们其实 啊,这个我们叫做什么呢?我们来写一笔吧啊? oppoject 的内容啊,窗体对象的名称,表示窗体对象的名称, 好,我们来写这个地方,这个地方,呃,这是这个属性,对吧?这属这个属性啊,我们再换一个属性啊, object name, object name, object name, 好,这个对吧? 这有二不留的内容属性,这个属性呢,就是表示什么呢?表示窗体对象的名称, 窗体对象的名称啊,窗体对象的名称,那么其实就很简单,我们就写到这行就行了啊,表示窗体对象的名称,因为为什么呢?这个窗体对象其实就是指这个, 嗯, q 位置的一个实力化对象啊,注意,窗体对象其实就是指啊, q 位置词 w, w, i, d, g, e, t 啊的实力化对象的 实力化对象啊,实力化对象,某一个实力化对象,那么这个实力化对象我们可以给他取一个名称,这个名称其实就是这个 form 的名称,对吧?这个 form 的名称, ok, 我们继续看下去啊,来,继续来对应过来,我们来看到他生成的这个 resides reset, 通过这个 resets 是什么意思呢?其实就是 这个,其实就是一个,嗯,而这个 set object, 我们 set object, 其实我们来看到啊,这个是 qt five 当中的一个设置对象的名称, 对啊,设置,对啊,没错,我们这这个地方还进行了一点点的补充啊,一点点的补充。 set object, 那么他是对应到对象的设计师界面,对吧?他是对应到拍神 代码中设置窗体的啊,设置窗体方法啊,设置窗体名称的方法啊,方法 ok, 哪个呢?就是指这个,对吧? 双,这是双体名称的方法,这个 set of 就是内啊啊, ok, 那么我们来再看到啊,这个地方上面,呃,这个 recise, recise 其实是指,就是指什么呢? recise 啊,那默认情况下他这个地方,呃,因为是左上角嘛, 所以他就默认情况就是零零了啊,可能就是零零了,那么我们瑞塞斯其实是对应就是从啊重新调整大小,对吧?调整窗底的大小啊,我们这个地方我们来把这个函数单独来列一下啊,瑞塞斯,那这瑞塞斯函数是什么意思呢?其实就是指啊作用 重新啊调整窗体大小啊,窗体的大小,大小 大小,那么这个大小其实很简单,我们上节课给大家有解释过,但是没有具体的写下来啊,我们这次给他彻底的写下来啊,那么他的一个有两个参数啊, 有两个参数,对吧?啊?第一个参数,我们通过这个四百对应过来,对应过来,我们看到这个地方其实就是什么?就是他的一个宽度,对不对?三百就 高度,对吧?哎,所以他的第一个参数其实就是第一个参数表示宽度值,宽度值啊,第二个参数表示高度值,对不对?高度值,那么举例其实就是指这样的一条 啊,对吧?举例我们来看一下啊,就是放点 recess, ok, 放点 recess, 这个是应该是一个小写啊,对啊,大家要注意,他是有大小写之分的啊,放点 recess 啊, ok, 那么我们来看一下啊,我们也可以通过这个, 呃,通过点击 ctrl 键,然后再点击鼠标左键可以点进去,哎,大家可以看到啊,这里面设置他宽高,对不对?他有这个啊,他有这个这个地方啊,这个地方是属于在哪里呢?我们可以看一下啊,在, 在我们的,在我们的这个很里面的一个方法啊,很里面的一个方法。呃,这我们应该是要到这个 qt p y q t 五这个这个地方。 p y q t 五的这一个方法里面啊,这里方法太多了,一下子也很难去找到,去定位到啊,那所以还是大家一定要记一下,对不对? p y q t 五的这个核心里面啊,对吧? p y q t 五的这个核心里面去设置它的一个宽高, 要找到的是要要对应到啊,这应该是这边啊,应该是这一边,大家看一下啊,这是上面的绘图的一个东西,对不对? graphic 啊,我们这个地方应该是 q veget 啊,设置它的一个宽高啊,我们来看一下 wedges, 应该是这一个方法啊,这就对了啊,对吧?大家来看一看到啊,这个 wedges 的它的一个所在的,它的所在 的一个。呃呃,一个一个他的一个拍摄代码所在的 页面啊,他是在哪里啊?他这个文件到底在哪里啊?大家看到在这个用户文件下面的,对不对?在这个用户文件下面啊,大家可以又通过这个地方右键,然后来找到秀音 x pro 啊,这个里面应该有很多啊,大家看到吗?啊?他都是一个 q t 的 p a q t q t five, 大家看到吗?这 q t q t five 我们安装在这里面啊, p y q t 五是不是安装在这里啊?当前的用户文件下下面啊?哎,我们我们所有的 所有的通过这个 py 管道啊,下载下来这个文件就安装在这个地方,对不对?然后我们通过这个地方,我们就找到了有一些其他的一些空间啊,对吧? qtfi 以及 qtv, 这次有哪些呢?有很多,这里面还有 button 啊,一些绘图的 slide go 啊啊,一些一些拉条啊啊,一些按按钮啊,一些带 lug 啊,一些这个 come on botton 啊, line 啊啊, file 啊等等,对吧?我们我们这个地方有很多 ktv 这词,也是这里啊, 包括我们这个里面有一个 risss, 对不对?通过这个 q 位置, q 位置最基础的一个代码啊, 最基础的一个负累啊,这个负累里面就是有这个地方,对吧?就是有这个瑞塞子,他的一个宽高啊,宽高。好了, 那么我们来看一下啊,这个地方我们是不是已经看到了?已经看到了,我们点进去刚刚已经看到了啊,应该大家不要找错啊,找的话应该找这个 pyqt 五的一个位置,对不对? pyqt 五的一个位置啊,毕竟我看看,我们看看这里面他有两个参数,这个也可以通过 q size 的这个 仓鼠来进行设置,对吧?啊?我们后面啊,再逐渐来使用这个东西啊, 好的,那么我们再接下去看下一条啊,再给接下去看下一条,这个下一条呢?我们实际上就是一个 sf 点调用了他,对不对? sf 点啊?啊?这个 retranse retranslate 什么意思啊? re translate, 我们可以把它来查词查一下啊, re translate 啊, 重新设置什么东西,对不对?圈子来的,是不是一个翻译啊?啊?是不是一个翻译的意思啊,对吧?我们来看一下啊。 呃,百度来看一下。瑞圈斯莱特是什么意思呢?啊?圈斯莱特就是翻译嘛,对不对?把什么或者把什么转变为什么啊?瑞圈斯莱特啊,就是重新翻译一下或者重新转变一下这个 ui, 然后呢对他来进行这个传入的这个对象啊,传入的对象哎。呃然后来来调用这一块啊,重新重置一下,对不对?重置一下。重置他成什么呢?重置他成这个 qt cool 啊,调用一个 qt cool。 qt cool 的话呢?我们也是在这也是有的啊,对不对? 我们是不是在我们刚刚的调用的这个文件啊?我们我们其实已经找到过了,我们不再去找了,刚刚已经找到这个 qq 号的一个文件夹了,对不对?啊?我们看到这个 qq 号下面有一个 q 号 啊, q call, application 还 translate。 那这个地方,呃这是一个,我们直接可以点点过来了啊这个这个地方应该是唯一只有一个我们我们这样子的唯一只有一个的话我们可以直接找到他了,对吧?可以直接找到他了。 qt call 对吧? qt call 这是一个文件夹,单 度的一个文件夹,里面有很多很多的一个核心的量的一些东西,对不对?哎可以有一些什么,一些系统的一些时间啊,一些系统的一些酷啊,一些操作系统的文件啊, 等等啊,非常重要的一些东西啊。长安没有对吧?嗯,大家可以通过呃这一个拍神代码的一个,呃他的一个,嗯嗯,就是就是这么一个 api 吧,对吧?差不多是一个 api 就可以看到了他的一个作用啊就可以。 ok 那么这个呢其实他最基础的我们可以看一下啊,这个类他是基础继承于哪里呢?他其实继承这些东西啊,都是继承于这个 oppo 句子啊,都是继承于这个 oppo 句子啊,对吧? ober 这个 oppo 句子才是最最根 根本的一个东西啊。啊,这是 q t 里面的东西啊,对吧?那么我们不多讲了啊,这是我们直接调用这个 q t five q t five 这个库就可以了,对吧? 好,我们这个地方呢, qt call 啊, qt application 对不对?呃是一个,最后再返回是一个转换过来的一个对象啊,将我们转换过来这个对象呢?我们可以设置 窗体的标题啊,这是窗体的标题啊。什么什么默认情况他是一个缝对不对啊?默认情况他是一个缝啊。 哦 ok, 这个地方有个 set set window title 啊,上一节课我们是不是用了 stat window title 啊,来设置我们窗帘的标题啊?实际上我们这个地方呢就默认情况已经给他设置过了啊,通过这个我们我们设计界面的时候就已经设置过了他的一个界面啊,对吧?我们可以把它变成。呃 我们待会进行转换啊,转换过程之后我们还可以进行设置,我们来进行观看好了啊。 ok, 我们下面的话呢,还有最后一条啊, qt mate mate qt 扣,然后呢? q mate 什么呢? object, 然后有一个 connect 啊? connect mate object 有个 connect。 什么有个槽, 死老子槽连接我们槽的名称,这个槽的槽是什么槽呢?就是指我们这个通过我们这个 qt 的一个核心代码去 呃, qt 当中最为关键的就是一个信号语槽啊,大家先进行一个了解吧,但是我相信,呃没有用过这个 qt 写代码的同学可能是可能会听不太懂啊,但是没有关系啊, 但是你记住有个信号槽的一个关系就行了,实际上就是一个 qt 的一个就相当于是 捕获 qt 当中的某个事件啊,事件其实信信号,我们其实就是一个事件,点击单机事件其实就是某个信号啊,可以这么去理解,嗯,好,那么我们简单的在后面加一条啊, qt 当中的理解啊, 啊 q t 啊中信号的理解,那么哎,比如说什么呢?比如说,呃这个单机事件对吧?单机事件啊,那个,呃或者说是这个某个 某个什么信号呢?比如说是超时超时信号啊,等啊,都是等啊,都是这个 q t 中 的啊, cqt 中的型号啊,可以,实际上啊,说到底其实就是某个说到底啊,说到底其实发生发生了某个事件说到底啊,说到 啊其实就就是界面上上面发生了某个事件啊,发生了某个事件 某个事件或者是某个信号啊事件可能是理解起来会比较的单一啊,其实其实或者发生了某个 信号会比较的准确啊,信号会比较准确。 ok, 那么我们我们来直接来生成自己再来生成一下啊,我们这一条啊, ok, 我们来执行 ljy 零零三 三自己来写一条幺 j y 零零零零 l j y 零零三吧啊零零三, ok, 我们来 现在我们来调用一下这个代码,对吧?调用来调用一下这个代码,再来调你一遍啊,以前已经调用过了,对吧?我们自己来写一下看看啊。 input 什么呢?首先 input 这个 sis 啊,是之前是不是已经给大家讲过啦?另外一个 input 什么呢? input 我们可以调用一下这个, 我们我们这一次可以传入这个微决策啊,不一定要传入这个闷微决策,对不对啊?我们这次此时传入这个微决策,哎,这个微决策的话,我们在什么 p y q t 五这里面的微决策里面就可以了,对不对啊?我们来 啊,这个是酷酷的名称 from 酷的名称,然后呢是一个音炮的导入,我们 只要导入这个啊, q apply k 群啊, q apply k 群以及这个 q 位置就可以了啊, q 位置,那么我们此时这两个,这两个库我们导入进来就可以了啊, 对吧?此事要倒入库啊,我们写的时候呢,嗯,程序的思想啊,待会还是要给大家再明确一下啊。 那么首先我们倒入库之后啊,我们来有一个 f 一句,对不对?这个 f 一句我们其实是可以不写的,我们之前是不是有给大家写过这个 f 一句啊?那这个 f 一句我们呃 name 在判断的时候呢,就是指本身的这一个, 就本身这一个文件在写入的时候模拟了一个路口,其实这个路口我们知道啊,拍伞,我们在写的时候,这个程序啊,我们就像批处理一样,一条条代码 执行下来的,对不对?实际上我们可以只要把这个程序作为一个,这个文件作为一个主路口的话,我们其实就也不需要写这个一辅一句,对吧?也可以不需要写这个一辅一句啊,当然写了这个一辅一句的好处呢,其实就是我们可以在其他代码在电路的时候呢我们可以呃 判断对吧可以不写就是可以不会创业腐具当中没人当中的这个代码可以不会不会被调用,哎这么一个好处啊,当然我们其实可以不写了对不对哦那么我们这里面先开始呃就直接布写好了,我们其实这个地方其实可以去布写的啊, 我们来看一下直接开始来写这个 q apply k 讯来首先来调一下啊 q apply k 讯 app 对不对啊?这还是要掉的对吧? q apply k 讯啊那么我们传录是什么呢?传录的是一个呃拍摄当中的一个参数 argb 对吧这是这还是非常重要的啊这个地方是什么呢? 首先这里面是我们这个导入的是系统类拍摄的系统类 啊,我们一条再解释一下吧啊导入啊拍摄系统类啊系统内裤 ok 第二条我们就是导入导入 pyqt 五类啊用到的内裤啊内裤一个是啊 oppolik 型 啊啊 placation 应用程序类对不对?程序类啊核心类啊,那么还有一个呢就是空间的之类 q 五 v 九 啊空间的之类啊之类对吧啊大家应该这里这几条应该都要知道的啊。好我们来再继续看啊。呃 plak 选我们现在就是把这个应用程序类进行实力化。 好我们一条条来稍微解释一下,因为呃有的小伙伴可能半路插进来啊,就是说是听这样一个程序啊,如果说你有之前的这一个,嗯 呃从我们的零基础拍摄教程啊老刘的零基础拍摄教程从第一期到一百二十五期的一个经验的话呢啊,学习之后你就可以怎么样呢?就拥有了这样一个啊,就是累的一个概念啊, 你就可以知道啊,我们这个地方你要进行实力化一个类,对不对?这个地方其实就是一个类库导入的是一个类啊,一个库呢,实际上就是一个类 class, 那么这个地方呢?实际上就是一个,呃, 这个基地其实就是一个实力化一个类,对吧?实力化一个类啊啊?通过构造函数,构造函数传入啊,传入这个 python 的参数, python 的应用参数 啊,有有拍成的用餐数啊,系统用餐数,对吧? a l g v, 我们可以点开来看一下啊, 这个地方是一个空的。 real 什么呢?它是一个 real value, 真的一个值,对吧? list 啊,有一些什么牌子,那些其他的一些东西啊, 这样一些东西会被装载进来的一些东西,我们就可以通过这个参数来进行传入啊,盘成的一些这个参数进行传入,那么有什么就传入什么吗?对吧?我们刚我们到时候可以看看到底是有什么东西,我们可以 打印进来,打印出来,对吧?可以也可以打印出来吗?他是一个全局变量啊,大家注意啊,当然是吧,他这个地方是一个全局变量啊,所以也就是说在后面也有可能进行传入的啊,这样一个参数的一个值,我们可以进行打印 啊, print 进行打印,对吧?拍摄一旦进行载入之后呢,我们就可以进行打印,此时我们其实就可以先看一下了啊,通过右键与 run 啊,可以看看什么都没有,对吧?有一个什么呢?他就有一个这样一个文件的名称被打印出来了,对吧? 他是一个什么?他这是一个列表啊,这是一个列表传入的第一个文件的名称,也就说是 a 九二零零三啊,就是把自己文件的名称传进来,这个文件的名称传进来,传进了什么呢?传进来之后就到这个 q opla k 群当中,我们就去构造了一个把这个文件,对吧? 把这个自己的这个文件名称自己给给传进来了啊?一个一个列表传进来之后,他可能就会去检测到,对吧?检测到 q aplux 就会去检测到,检测到这个列表,对吧?这个列表这个列表他可能会在初始化的时候进行应用啊,进行应用初始化的时候我们就要载入进来,对不对? 好了,那么这是我们打印的一个拍摄的一个参数,到底是什么,对吧?这个时候我们参数是 一个就就一个文件的名称啊,有一个文件的名称,我们拍摄直行过来的时候就会有的啊,就会有的。那么这个地方呢,我们其实就是实力化一个类啊,实力化一个类,然后呢传入我们的拍摄的应用参数,其实就是这个参拍摄的应用参数其实就是一个拍摄的文件名称,对吧? 啊?这里啊打印打印出啊,这个当前文件名称的啊,列表啊,包含当前文件名称的, 包含当前文件名称所在路径名称。呃,应该是具体路径当前文件 具体路径的名称,对吧?具体绝对路径?应该是啊,绝对路径,所谓绝对路径啊,就是包含从根目路开始啊,然后到文件的名称这里啊,我们绝对路径的名称啊,绝对路径, 我们把这个稍微写一笔啊,稍微写一笔,这个绝对路径,绝对路径, 那么路径说明啊,这有两个,一个叫做绝对路径的概念,一个叫做相对路径的概念啊,大家要明白的,绝对路径,我们一般来说从从根目录开始到文件的名称啊,从根目录,根目录开始的路径啊,路径 详细路径,对吧?详细路径啊,那么还有个是叫做相对路径啊,相对路径呢,其实就是相相对于某个文件 目录啊,目录的路径啊,相对于某个文件目录的路径啊,不会出现详细的这个路径的名称,对吧? ok, 相对路径,我们往往啊,通过一些啊, 相对路径,路径往往有一些代表性的东西啊,往往有一些符号代表,符号代表啊,代表。 ok, 那么什么呢?我们是点这个点啊,点 点表示当前路径啊,当前路径点点表示什么呢?这个叫是点点啊,表示上一层,上一层 路径啊,上一层路径那点点杠,点点杠啊,那就是上一层的上一层路径,对吧?哎,好,我们往往啊,就用这两个,哎,表示的比较的多啊,表示的比较多。好了,那么我们接下去呢,有了这个应用程序之后 后啊,我们最后就是为了程序退,程序退出而使用的,对吧?程序退出而使用程序退出的话,我们是有一个监控的啊,通过 six 的一个,呃呃,退出 excite 啊,退出之前我们监控的什么呢?监控的是 app 的 excite, 这个时候呢,这个地方其实就是监控程序的界面,监控程序退出的时候,对吧?监控,我们这个进程退出, 退出之后呢,我们会有一个执行一个退出的代码啊,实际上这个地方退出的是一个,执行的是一个,返回的是一个零,对不对?返回的是一个零,也就是说监控啊,啊?监控这个, 呃,这个地方呢,其实就是一个死循环啊,此时这里其实是一个死循环啊,死循环返回的一个界面啊。嗯,这个表示 这个界面程序界面监听事件, 今天啊,这个上次,上次好像给大家记过了啊,记过了啊,那我们再记一笔啊,今天事件的开启啊,是一个死循环 啊,是因为是一个记起来了吗?死循环,这是一个死循环啊,一直不断的去监听我们事件的界面,对吧?我们来看一下啊,我们现在这个程序有吗?现在是什么都没有吧?应该,对吧?我们右肩来看一下啊, 哎,还是什么都没有?他就是一个进程在这里,对吧?他就是表示一个进程在这里啊,现在我们把这个观看掉啊,所以我们这个地方其实是什么都没有啊,就一个进程,对吧?也没啥用啊。那我们界面是不是要搞一个啊?界面我们来搞一个看一下。界面搞一个我们界面的话来自于我们 之前的那个这个东西,对吧?是不是来自于这里啊?四百、三百啊什么的,对吧?那么我们这里呢?呃,我们来把这个东西进行实力化啊,把它进行实力化,导入这个,导入这个什么 uiphone, 对不对啊?首先把这个界面的 把,这个应该是 test ljytest 零零三要倒进来这个模块啊,这个模块首先要倒进来啊,来,再来导入一个啊,再来导入一个 input 啊, ljy, ts 零零三,对吧? ts 零零三, ok, 这个地方我们就是导入模块啊,导入叫做导导入模块,对吧?导入这个这什么的模块呢?导入类 的,呃,生成界面的类的模块啊,生成界面的类的模块,对吧? ok, 那么我们导入这个类的模块之后有什么用啊?什么用呢?我们就是要现在开始是就可以调用了吗?对不对?调用这个模块啊,调用这个模块的什么呢?他的一个 uifo, 对不对?他的 ui, 哎,大小写是有区分的啊。 uifo, 我们这个类啊,我们将类进行实力化, 将类进行实力化缝,对不对?他是不是一个缝吗?我们就用缝好了啊,就一个缝。呃,实力化,我们这个类 实力化生成生,生成的界面的类啊,这是一个实力化生成的界面的类,那么我们将实力化生成的界面这个类的话呢?我们可以进行一定的配置, 或者是啊通过这个什么呢?通过这个,呃, set, set up ui, 对不对?通过这个地方我们传入这个一个,把这个类呢传入到某个界面上,那通过他传入到哪一个界面上呢?我们就要 搞一个界面出来,那搞一个界面是哪一个界面啊?就是一个通过 q 啊, q 位置词啊,就可以作为一个 啊,窗体的一个界面,对吧?窗体的一个界面,我们就直接来一个 qv 的啊,那大家其实记住这一个步骤啊,这其实就是一个程序生存的一个思想啊。 好,那么我们来这个前面是不是要补一个啊?他是不是没有啊?没有我们就要搞一个 q v j 词, ok, 那么我们就用 w 来表 w 来表示 v j 词好了啊,呃, ok, 然后呢是一个 q v j 词,对不对? q v j 词啊?好,我们就直接实力画一个界面 写一下实力化啊,实力化,实力化,界界面之类啊界面之类, 这也可以表示一个实力化的一个界面积累啊,啊,对吧?界面的一个积累位置成一个空间的积累,我们把它传入进来就传入到我们他就行了啊,好,传入到他之后呢?我们就是,呃,是不是通过他进行赛特阿普拉? 现在阿布之后啊,就是实际上就已经把我们的这个界面啊,就已经啊 ok 了啊,就已经 ok 了。然后呢就是不是装载到这里面去了? 我们看看啊, ctf 装载到哪里呢?是不是装载到这个啊? fom 啊?装载到这个 fom 这里去了啊?装载到我们实力化的这个 fom 里面去了啊? fom 点什么?什么?是不是?哎?装载进去之后我们是不是就可以将这个啊?他就显显示出来了?显示出来了, 我们来看一下啊,有没有东西啊?是不是如此啊?哎,是不是四百三百啊?但是呢他这个地方呃出来的时候呢,他默认情况下是给你生成的是 中间,是不是?这中间的是不是在中间的?哎?这个中间的这个位置啊,实际上是呃,就生成之后因为我们默认情况下没有配置的,所以默认情况下之前看到的是左上角的零零,对不对?左上角的零零,那所以 但是他在零零的时候呢?他在生成的时候他并没有零零,对不对?并没有零零,那么我们也可以,比如说在这个地方我们给他生成写一个零零啊 form 啊,比如说我们自己写一个零零,自己可以补嘛,对吧?凤点木啊,通过木 呃木啊填放点木的方式啊,比如说是木到零零的这个 位置啊。好,我们来自己再看一下右键绕,你看是不是跑到窗题左上角的零零啦,哎窗题左上角的零零啦,哎。这个地方呢,其实我们使用了一个木方法来 对他的位置啊进行调整啊,我们对他来这个地方木方法啊木方法来做一个补充啊木方法来补充木方法的话呢,我们其实 作用是什么呢?调整啊,调整这个窗体的位置啊调整窗体的位置啊。那么第一个参数表示这个水平方向 水平方向的位置啊,那么第二个参数表示垂直方向的垂直方向的位置啊。这动 是一个用餐用。用什么用像素来表示的啊?母母方法啊,我们刚刚举例,我们可以把这个例子拿过来,对吧?我们修改了我们生成过来的这个类啊,到零零的这个位置啊,因为我们默认我们零零那个位置啊,其实在生成的时候他就没有给你拿进去的啊,对不对? 哎,因为他认为是零零,他可能认为你就是跑到中心位置的啊,啊对吧?举例,使用举例, 使用举例, ok, 我们就是放点,放点什么木?好,那么我们通过这样一个解析啊,我们上一节课啊,默认情况下我们最早的时候我们是不是用的是这个没有温度啊, 而没有 window 的话,我们知道的啊,它继承的是这个啊, q v 九七,对不对?我们看到翻到最上面啊,翻到最上面之后,我们发现它是继 现在是 q 微酒厂,所以啊,我们就是此时我们自己在写的时候,我们其实也可以时间是简单一点,直接写这个,直接写这个叫做什么微酒的就行了,对吧?是不是啊,直接写这个微酒的这个类 啊,直接写这个 vigo 的这个这个鸡肋就可以了啊,对吧?这是一种最为简单的一种写法,那么大家呢,也可以去尝试一下,也可以不使不采用这个,呃, 不采用这个,这个夜府渔具的方式在这里可以用,当然最好的还是采用这个夜府啊,夜府渔具这个通过内来模拟我们这个函数的一个文件的入口,入口啊,这样会显得我们的这个代码会比较 有水平吧,哈哈,会比较的,呃,正规一点,对吧?那如果正规一点,那么我们可以把这上面还有加个 fme 啊, fme, 那么这样子也可以使得我们这个类啊,可以在多方面进行使用啊,也比如说可以导入到其他的类当中,把这样一个窗体呢单独去进行调用啊,单独去进行调用,那这个地方我简单的可以给大家来写一下啊,这地方是使用窗体,窗体显示 啊,显示函显示,所以我们这个秀呢,是其实是调用窗体显示函数,对吧?嗯,秀秀函数, p y q t 五的秀函数是窗体的显示功能啊,窗体的显示功能使得窗体显示出来啊,那么这个呢,实际上是它自动生成的,对吧?这其实就是一 个什么将啊将生成的生成,呃的这个,呃窗体控件及配置什么载入到,载入到这个 w, 也就说是威瑞特这个空间对象, 空间对象中,那么我们将这个空间对象载入进去之后呢,就相当于是这个配置进去,对吧?然后我们就可以显示出来了啊,最后我们就是监控我们这个窗体,窗体这个 app 的对象就可以了啊, 也就是监控我们的这个,呃,我们这个这个叫做什么?呃进程,对吧?监控我们的进程,然后监控监控进程的事件一旦发生什么啊,那我们就进行钓鱼就行了啊。好了,那么我们今天的话呢,主要是给大家呢做了一个非常详细的 一个对照啊,是什么的对照呢? pyqt 五的这个代码,以及对我们的这个啊, qt 点三个啊的一个设计,对吧?对照我们这个设计啊,做了一个详细的讲解,这个文件的一个详细的讲解,那么嗯,大家呢也 自己要好好的去体会一下啊,你自己比如说再加一个东西或者减一个东西,对吧?哎,自己可以去感感受一下这一个过程。好,那么我们最后来进行一次总进行一个总结啊,我们学到什么呢?呃,首先要掌握这个,呃, 拍死啊,对吧? qt 点三个 dsigne 啊,点 qt 点三个。 第三个设计界面与什么呢?与这个我们的 pyu ic 啊,转换后文件代码的对应关系啊,对应关系,这个是非常重要的啊。第二个我们就是要掌握 pyqt 五的啊, 五中基本啊界面的界面,界面中常用函数的基本用法啊用法。那么第三个我们就是要掌握这个什么呢?掌握这个,呃,应该来说是有一点非常重要啊,如何 如何?呃,调用调用生成界面的啊,思想,思想对吧?如何调用生成界面的?这个思想实际上就是应该是,呃, 则啊,实则是什么呢?是 pyqt 五,哎。实则是如何使用 pyqt 五 纯代码啊,纯代码写这个,呃, gui 界面的关键 对吧?就这几点啊。好了,那么本期的教程呢?就是这些啊,如果说你感觉我的教材对你有所帮助的话呢,欢迎继续订阅关注,为我点赞啊。 呃,我们在这个百度的贴吧当中有一个呃呃,贴吧的名称叫做边城创造城市啊,大家如果说呃有什么问题的话呢,欢迎在这个贴吧当中进行留言。好了,我们的啊教程就这些, 哎。刘军编程编程创造城市,欢迎小宝们继续关注我们,下期再见!拜拜!



hello, 大家好,今天给大家演示一下在 qt designer 中使用三格布局 grade lay out。 那什么是三格布局呢?三格布局可以说是把空间按照一个二维的表格来排练, 就比如说把这个两行三列的一个表格比作是一个三格布局。现在我们把空键一个一个的放置到这个表格的单元格当中。 下面演示一个最简单的两行两列的三个布局。首先我们把四个空间都放置到我们的面板上, 上按钮一,按钮二, 按钮三, 把按钮三。拖动下来排成两行两列。好。按钮四,把四个按钮选中之后,右键选择布局, 再选择三个布局。好。现在四个空间的三个布局就完成了。 这个时候可以通过拖动来改变三个布局的尺寸,同时按钮的宽度也会随着三个布局的尺寸的变化而变化。 下面演示一个稍微复杂一点的三个布局,就是计算器的这个数字面板。大家可以观察一下 零这一个按键,它是占了两个格的。那怎么样来通过三个布局来把这个零安排在两个格子里面呢? 跟之前的操作一样,把按钮控件拖动到面板上, 这里是数字七键, 数字八键好,数字九键。这里通过选中三个按钮复制粘贴,这样可以方便快捷一点。 五六。 下面是数字减一,数字减二和数字减三。 好,下面就到数字键。零, 我们可以通过拖动来加宽按键铃的宽度来让它占两个格。最后一个就是点按键, 这个时候他会自动的扫描所有的空间的尺寸。然后呢,确定如何来安排空间的位置, 稍微放大一点,尺寸好,下面预览一下。 这就是使用三个布局的数字面板效果。谢谢大家的观看。

大家好,我是何一猫。本节我们来讲一下 python p y q t 五的竖形空间好,那我们呢先来运行一下 好。然后呢,看一下这个代码好,竖行空间呢啊,就这种竖行结构啊,大家可以发现呢,他是可以展开的啊,这也是一个非常常用的空间 好。首先呢,第一步创建一下 q tree visit 啊,这样的一个空间对象啊。然后呢,设置的是列啊,这里是两列。然后呢,设置一下投入标题啊,通过这个 set header labels, 一个是键,一个是值。 然后呢设置一下跟节点啊, cure tree vegetator。 然后呢,这个 根节点这个位置呢,啊,在第零列这个位置啊,给他设一个叫根末路。然后呢,再给他这第零列位置呢,设置一个图标 q x 啊。当然了,我就都用黑猫的图标了啊,主要是没有找那么多图标 好。然后呢,接下来呢设置跟节点的背景颜色啊,那这里呢创建一个 brash 画刷的这个对象啊,是绿色的。 然后呢,呃,让这个 root 根结点呢, set background 啊,在第零列这里设置一下绿色。然后呢,第一列这里啊,这里再创建一个画梢的对象,它是蓝色的。然后呢,在第一列这里呢,设置为蓝色的背景。 然后呢,下面呢,再来设置一下竖形空间列的这样一个宽度 啊。然后呢宽度呢是,呃,这个是竖形空间的这样一个宽度啊,列的宽度。这里呢是一百五。 然后呢,在这个根结点下面呢,可以设置这样一个子结点啊,他呢也是一个 q 吹啊对象,但是呢,他是一个 q 吹,也是一个 q 吹 item 对象。 然后呢,这个子节点呢,给他设置在第零列这个位置呢,给他设了一个第一个子节点啊,第一列这里呢设置一个网易啊,这里起了一个名字啊,然后呢又设置了这样一个图标啊,这是在第零列这里呢,还是设了一个图标啊,这还是一个黑猫的图标。 然后呢接下来呢这个呢是可以勾选啊,那这个可以勾选呢,就把它设置一下 set 啊,拆个 state 啊,给它设置为 q t 点儿 check 好。然后呢根结点呢,这里呢注意把它添加进来。然后呢接下来呢设置一下第二个字结点啊,叉二得二。然后呢它是 q tree, v g type 啊,它呢是 呃它的负啊,它就是呃依赖于这个 root 啊,它是放在 root 上的。好,那我们来看一下这一个 啊,这个字节点一呢,它直接呢就在 root 里面啊,这里呢可以把这个 root 呢给它加上, 然后代表呢他是一个啊,他所属的这个副容器。然后呢在第零个位置呢,设置第零列,设置第二个直接点,然后呢再在第一个位置在这写上内容淘宝。然后呢给他一个图标,然后呢直接点三。大家注意看这个是 是 q tree 啊, v j 的 item 这样一个对象,然后呢它呢是 child。 二啊,它是它的负节点呢是它就是它的上一级是它啊,然后呢一呢就要退出啊,然后给它一个图标 好。然后呢我们接下来呢啊就往下看啊,呃,给节点呢添加一个响应的一个事件 啊,当被点击的时候呢,啊他呢就会有这样一个事件啊, unclear 的之后我们就会去看他。然后节点呢全部展开啊,默认就是全部展开的情况啊,现在呢是折叠展开。 然后呢,接下来呢给他一个布局填进去。那么当我们选中了当前的这样一个项目之后,好,然后呢他就会打印出来啊,这个就是 tre。 然后呢这个 item type 是零, type 是一啊,分别呢就是这两个部分啊,因为我现在点的呢是根部啊,所以说没有什么反应。那这样我点击一下这里好,这里好,还有这里 好。那这个呢就是我们的竖型目录啊,那这个也是一个呃非常常用的这样一个空间。然后呢,下面呢我们再来导入一下第二个 好,第二个呢,其实呢啊它是比较简单啊,这里呢是 windows 当中呢,也算是比较常用好。它呢是这个样子啊,它创建了一个 q dnr 的 这样一个 directory 的这样一个模型啊,然后创建一个竖行空间,然后呢这个竖行的这样一个 view 的 tree view 啊,这是 tribute, 它呢是 set mode 啊, set model, 把这个模型呢给它放进去。然后呢,这个呢是我们的 windows 系统自带的 啊,他呢就可以直接看到我的这个 windows 系统的这样一个磁盘的情况啊。那我现在呢,其实呢就是两个磁盘, 而且呢现在呢这个叫呃 data modified 是十月一号啊,因为上午呢我还在直播,直播讲这个啊,算法的这样一个冲刺的课程。好,那我们本节课的内容呢,就先到这里。
