GUI学习之一——PyQt5初识
我们在第〇篇里先演示了GUI的功能,其实Python有多个库是支持GUI编程的,python官网列出了大量的说明,其中包括了原生的tkinter
还有许多第三方库
Pyqt
PySide
wxPython
PyGUI
Kivy.....等等
选库标准
首先,我们要明白,对任意一个库来说,都是没有最好的,只由最合适的,所以我们要结合这几点来来选择最适合自己的库:
1.简单好用
2.功能强大
3文档齐全,方便查询
4.性能强劲
5.稳定性高
6.生态支持
7.跨平台支持
8.开源免费.
除了上述的几点外,还有两点非常重要
可以看看软件版本和最近的更新时间,尽可能避开最小的版本号的和很久没有更新的,因为版本号太小是刚出的,有可能很多BUG都没有暴露出来,而太久没有更新的已经没有技术支持了,在大型的项目里一旦出了问题太难维护。
基于以上标准对比,我选择了PyQt5。
什么是PyQt?
PyQt本质上还是Qt,是一个用C++写的一个跨平台的GUI开发框架。而PyQt是Qt用Python进行了绑定,在保留原有的API时实现了原有的所有功能。所以一旦掌握了PyQt后再掌握了C++的基本语法可快速接受Qt的使用。
而现在使用的PyQt5,是Python对Qt5.x版本的绑定,完美的支持了Python3.x。
GUI编程要学习什么?
1.各种控件的特性和使用
2.控件的样式
3.资源的加载
4.控件的布局
5.事件和信号
6.动画特效
7.界面跳转
8.设计工具的使用
9.额外的东西
我们把设计工具放在最后,就是在学会代码的时候利用QtDesigner之类的工具优化我们的编程流程,就是为了防止我们先会用设计工具忽略代码的方法。
PyQt5库结构
QtWidgets包含了一整套UI元素,用于建立符合系统风格的界面
QtGui 涵盖了多种基本图形功能的类:字体、图形、图标、颜色等
QtCore 涵盖了包的核心非GUI功能:时间、文件、目录、数据类型、文本流、连接、线程进程等
这三个是最长用的类,后面的我们以后有时间再讲
还有一个模块:Qt,是把所有的类综合到一个模块里。好处就是不用关心哪个模块里有哪些类,但是由于加载了所有的类,比较吃内存,适合新手学习时候使用。
下面用一个最简单的代码分析一下PyQt5程序基本结构
from PyQt5.Qt import * import sys app= QApplication(sys.argv) window = QWidget() window.setWindowTitle('first GUI') window.resize(500,500)#窗口大小 window.move(0,0)#窗口位置 lable = QLabel(window) lable.setText('Hello World!') lable.move(200,200) window.show() sys.exit(app.exec_())
from PyQt5.Qt import * import sys #导入模块 app = QApplication(sys.argv)#创建应用程序 window = QWidget() window.show()#控件操作 sys.exit(app.exec_())#开始执行应用程序并进入消息循环(无限循环)
注意通过app.exec_(),启动了一个无限循环,在这个循环里不断监听和用户的交互信息。
在控件操作的时候,常规方式就是先建立一个界面的父控件,再针对这个父控件建立按钮、标签等控件,完成后调用父控件的显示功能。