pyqt5pythonGui入门教程资料下载.pdf
《pyqt5pythonGui入门教程资料下载.pdf》由会员分享,可在线阅读,更多相关《pyqt5pythonGui入门教程资料下载.pdf(67页珍藏版)》请在冰豆网上搜索。
def_init_(self):
#def是定义函数(类方法)了,同样第二个_init_是函数名#(self)是pyqt类方法必须要有的,代表自己,相当于java,c+中的this#其实_init_是析构函数,也就是类被创建后就会预先加载的项目super(mywindow,self)._init_()super(mywindow,self)._init_()#这里我们要重载一下mywindows同时也包含了QtWidgets.QWidget的预加载项importsysimportsysapp=QtWidgets.QApplication(sys.argv)app=QtWidgets.QApplication(sys.argv)#pyqt窗口必须在QApplication方法中使用,#要不然会报错QWidget:
MustconstructaQApplicationbeforeaQWidgetwindows=mywindow()windows=mywindow()#生成过一个实例(对象),windows是实例(对象)的名字,可以随便起!
#mywindows()是我们上面自定义的类windows.show()windows.show()#有了实例,就得让他显示这里的show()是QWidget的方法,用来显示窗口的!
sys.exit(app.exec_()sys.exit(app.exec_()#启动事件循环pyqt5&
pythonGui入门教程(入门教程(22)第一个窗口(第一个窗口(22)上图是第一篇教程,下面的显示效果都一样,我们来看看有什么不同1、类的名字、实例的名字都换了,2、多了一个if_name_=_main_:
以及下面的代码缩进了,层次改变了1、我们把结尾的5句代码,单独建立了一个函数2、然后直接调用函数3、注意两个def的缩进,第一个def缩进了代表是在class里面,第二个和class平齐,则是在外面。
可以看到显示效果是一样,我们却有很多办法去实现。
知识点:
1、if_name_=_main_:
是代表如果这个文件是主程序这运行下面的代码,如果是被别的程序文件调用的话,则运行下面的代码。
2、_init_方法在类的一个对象被建立时,马上运行。
这个方法可以用来对你的对象做一些你希望的初始化。
注意,这个名称的开始和结尾都是双下划线。
3、生成实例(对象)必须以类名(),别忘记了()4、类中的函数(方法)必须有self,是代表属于这个实例(对象)本身持有的,而外部定义的函数则不需要。
整个流程;
先导入PyQt5中的QtWidgets通用窗口库,通过继承QtWidgets.QWidget来定义自己的窗口。
然后生成一个对象(实例化),再调用QWidget的show()方法来显示这个窗口。
pythonGui入门教程(入门教程(33)第一个窗口(第一个窗口(33)frist.py文件second.py文件这是两个文件,第一个文件和之前一样我们只录入的上半截,第二个文件我们保留了下半截,也就是将一个文件分成两个文件,从second.py文件调用frist.py来显示窗口的目的。
注意second.py文件加入了一句fromfristimportfristwindows即导入first.py的fristwindows类是不是很熟悉,将自己的文件作为库导入进来,然后调用即可!
虽然都是显示窗口,我们这里已经学习了很多办法来显示它。
代码区别也是很大,关键是灵活运用。
1、库,这个例子是将我们自己的文件作为库导入,也可以称为自定义库。
注意不用.py结尾,pyqt会自动识别。
2、frist.py的firstwindows的代码就是显示一个窗口用的,但是没有将它实例化,并在QApplication中运行。
所以运行frist.py是不会显示任何窗口的。
我们将显示firstwindows的方法写在了第二个文件中,达到逻辑与界面分离的效果。
3、QApplication相当于main函数,也就是整个程序(有很多文件)的主入口函数。
对于一个Gui程序必须至少有一个这样的一个实例来让程序运行。
4、最后一句是调用sys库的exit退出方法,退出条件(参数)是app.exec_()也就是整个窗口关闭。
其实入门没什么难度,只是对一些基本概念的掌握和了解,本人也是菜鸟,写的不是很好,只是希望能和更多有兴趣爱好的新手一起交流学习。
PyPyQt5&
pythonGuiQt5&
pythonGui入门教程(入门教程(44)初探初探QtQtDesignerDesigner设计师设计师网上很多教程都是代码,对于新手看起来就很头疼,pyqt同样为我们提供了Qtdesigner来设计窗口界面,用起来也非常方便,对于新手我们应该善用它,虽然做出来的界面不那么华丽,但至少可以做出个像样的窗口来。
打开PyQt5的QtDesigner,会自动弹出新建窗体对话框,对于我们最常用的就是Widget通用窗口类,还有个MainWindows顾名思义主窗口。
PyQt5的Widget被分离出来,似乎用来替代Dialog,并将Widget放入了QtWidget模块(库)中,PyQt4是QtGUI。
这是一个Widget和MainWindows,从界面上看起来没有什么,只是MainWindows默认添加了菜单栏、工具栏和状态栏等。
默认左边是控件栏,提供了很多空间类,我们可以直接拖放到widget中看到效果,点窗体-预览(Ctrl+R)每个空间都有自己的名称,提供不同的功能,比如常用的按钮、输入框、单选、文本框等等,右边是对窗口及控件的各种调整、设置、添加资源(列如:
图片)、动作。
还可以直接编辑Qt引以为豪的信号槽(signal和slot)。
有了QtDesigner使得我们在程序设计中更快的能开发设计出程序界面,避免了用纯代码来写一个窗口的繁琐,同时PyQt支持界面与逻辑分离,这对于新手来说无疑是个最大的福音,当然要做出华丽的界面还是要学代码的。
至少QtDesigner为我们提供了一些解决方法,另外我们也可以通过QtDesigner生成的代码来学习一些窗口控件的用法。
PyQt5&
pythonGuiPyQt5&
pythonGui入门教程(入门教程(55)QtDesignerQtDesigner窗口窗口布局布局LayoutsLayouts(11)QtDesigner窗口布局Layouts提供了四种布局方法,他们是:
VerticalLayout纵向布局HorizontalLayout横向布局GridLayout栅格布局FormLayout在窗体布局中布局前三种是我们经常会用到的,我们将布局Layouts拖动到窗体上会有红色框来显示,Layout的一些属性可以通过属性编辑器来控制,一般包括:
上下左右边距间隔,空间之间间隔等。
在我们使用布局之前,我们得对层次要有个了解,在程序设计中一般用父子关系来表示。
当然有过平面设计经验的童鞋对分层应该有所了解,这里我们还需要将层分成层次。
其实就像python中规定的代码缩进量代表不同层次的道理差不多。
从对象查看器中我们可以方便的看出窗体(Form)-布局(Layout)-控件(这里是PushButton按钮)之间的层次关系。
Form窗口一般作为顶层显示,然后使用Layout将控件按照我们想要的方式规划开来。
这里要注意一下,QtDesigner设计出来的文件默认为ui文件,里面包含的类css布局设计语言,如果想要查看代码我们还需要将它转换(编译)成py文件,我们可以使用一条DOS命令来完成D:
Python33Libsite-packagesPyQt5pyuic5.batmian.ui-ofrist.py更实用的转换命令可以将当前文件夹下所有ui转换成py文件:
for/fdelims=%iin(dir/b/a-d/s*.ui)doD:
Python33Libsite-packagesPyQt5pyuic5.bat%i-o%i.pyPyQt支持用LoadUi方法直接加载ui文件,当然我们通过转换后可以方便学习PyQt窗体控件的源代码。
下一篇我们来分析一下QtDesigner布局的源代码PyQt5&
pythonGui入门教程(入门教程(66)QtDesignerQtDesigner窗口窗口布局布局LayoutsLayouts(22)首先我们来看一下,我们创建一个空白Widget窗体,QtDesigner都为我们做了些什么?
嗯,比我们第一个窗体,多了那么几行代码,默认转换后的py文件还不能直接显示出效果,下面我们慢慢学习。
这里我们只加入一个栅格布局,然后.QtDesigner居然给我们多了6行代码其实QtDesigner生成的代码(编译后)还是非常给力的,至少比我们自己写的规范多了。
这些代码或许不需要我们自己写,但至少我们能看得明白。
其中最主要的两句代码是:
self.gridLayoutWidget=QtWidgets.QWidget(Form)self.gridLayout=QtWidgets.QGridLayout(self.gridLayoutWidget)从QtDesigner中可以看到栅格布局默认创建了两个对象,QtWidgets.QWidget和QtWidgets.QGridLayout。
注意(Form)和(self.gridLayoutWidget)参数,这里可以理解为放置到相应的对象里面。
QtDesigner果然做的比我们想想的多,下面我们再通过简化后的代码来对比一下,可能跟容易理解一些。
注意:
QtDesigner首先会见栅格布局作为一个widget放入窗体,并且不影响窗体大小。
栅格布局一般作为顶层布局使用,所以简化后的代码有个self.setLayout(self.gridLayout)同时QtDesigner会加入一些基本设置,默认信号槽声明,国际化语言支持等等,确实比我们自己写的要好的多。
当然我们需要了解其中的奥秘。
左边是QtDesigner设计效果,右边是显示效果。
再来个稍微复杂点的知识点:
记得在QtDesigner中窗体的layout层次可以通过对象查看器来查看,layout的一些设置可以通过属性编辑器来修该。
通常我们使用栅格布局作为顶层布局,将控件放置好之后可以通过右键-布局-栅格布局,将布局充满整个窗体。
我们可以先放入控件,然后ctrl选中多个控件,然后点击工具栏上快速布局工具进行布局。
在mianwind