第一章:PyQt5简介

一、关于 PyQt5

PyQt5 是Digia的一套Qt5应用框架与python的结合,同时支持2.x和3.x。本教程使用的是3.x。Qt库由Riverbank Computing开发,是最强大的GUI库之一 ,官方网站:www.riverbankcomputing.co.uk/news。

PyQt5是由一系列Python模块组成。超过620个类,6000函数和方法。能在诸如Unix、Windows和Mac OS等主流操作系统上运行。PyQt5有两种证书,GPL和商业证书。

官方操作指南:https://www.riverbankcomputing.com/static/Docs/PyQt5/

PyQt5类分为很多模块,主要模块有:

  • QtCore:QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。
  • QtGui:QtGui模块涵盖多种基本图形功能的类; 包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面 和字体文本。
  • QtWidgets:QtWidgets模块包含了一整套UI元素组件,用于建立符合系统风格的classic界面,非常方便,可以在安装时选择是否使用此功能。
  • QtMultimedia:QtMultimedia模块包含了一套类库,该类库被用于处理多媒体事件,通过调用API接口访问摄像头、语音设备、收发消息(radio functionality)等。
  • QtBluetooth:QtBluetooth模块包含了处理蓝牙活动的类库,它的功能包括:扫描设备、连接、交互等行为。
  • QtNetwork:QtNetwork模块包含用于网络编程的类库,这组类程序通过提供便捷的TCP/IP 及 UDP 的 c/s 程式码集合,使得基于Qt的网络编程更容易。
  • QtPositioning:QtPositioning模块用于获取位置信息,此模块允许使用多种方式达成定位,包括但不限于:卫星、无线网、文字信息。此应用一般用于网络地图定位系统。
  • Enginio:Enginio模块用于构建客户端的应用程式库,用于在运行时访问 Qt Cloud 服务器托管的应用程序。
  • QtWebSockets:QtWebSockets模块包含了一组类程序,用以实现websocket协议。
  • QtWebKit:QtWebKit模块包含了用于实现基于webkit2的网络浏览器的类库。
  • QtWebKitWidgets:QtWebKitWidgets模块包含用于基于WebKit1的Web浏览器实现的类,用于基于QtWidgets的应用程序
  • QtXml:QtXml模块包含了用于处理XML的类库,此模块为SAX和DOM API 的实现提供了方法。
  • QtSvg:QtSvg模块通过一组类,为显示矢量图形文件的内容提供了方法。
  • QtSql:QtSql模块提供了数据库对象的接口以供使用
  • QtTest:QtTest模块包含了可以通过单元测试,以调试PyQt5应用程式的功能。

二、开始安装PyQt5

Windows上安装:pip install pyqt5

验证是否安装成功,只需要导入下该模块就可以(注意大小写),如果没有出现任何错误提示,则安装成功。

三、第一个程序

运行以下代码,呈现一个简单的PyQt5程序

import sys # 1
from PyQt5.QtWidgets import QApplication, QLabel # 2



if __name__ == '__main__':
app = QApplication(sys.argv) # 3
label = QLabel('Hello World!') # 4
label.show() # 5
sys.exit(app.exec_()) # 6

 注释:# 1 导入sys模块,Python的sys模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数。通俗来讲,sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python运行时的环境。

# 2 导入 QApplication和 QLabel模块,

# 3 创建应用前必须先实例化一个QApplication,并将sys.argv作为参数传入;(sys.argv  获取当前正在执行的命令行参数的参数列表(list))

# 4 实例化一个QLabel控件,该控件用来展示文字或图片,这里用于展示文本。可以像上方代码一样直接传入‘Hello World’进行实例化,也可以先实例化,再调用setText()方法来设置文本。

import sys
from PyQt5.QtWidgets import QApplication, QLabel


if __name__ == '__main__':
    app = QApplication(sys.argv)
    label = QLabel()
    label.setText('Hello World') # 调用setText()方法来设置文本
    label.show()
    sys.exit(app.exec_())

# 5 通过调用show()方法使控件可见(默认是隐藏);

# 6 app.exec_()是执行应用,让应用开始运转循环,直到窗口关闭返回0给sys.exit(),退出整个程序。 在Python2中exec是关键字,所以PyQt5就使用exec_()而不是exec() 。不过exec在Python3中已经不再是关键字了,在Python3中使用exec()也可以。

 代码运行的结果:(windows下运行结果)

 

 也可以通过在字符串中添加HTML代码,修改文本样式。

 1 import sys
 2 from PyQt5.QtWidgets import QApplication, QLabel
 3 
 4 
 5 if __name__ == '__main__':
 6     app = QApplication(sys.argv)
 7     label = QLabel('<font color="red">Hello</font> <h1>World</h1>')
 8     # label.setText('<font color="red">Hello</font> <h1>World</h1>')
 9     label.show()
10     sys.exit(app.exec_())
View Code

代码运行结果:

 

 四、小结

1. 本章主要介绍了PyQt5的主要模块

2. QLabel是文本控件,但是也可以用来展示图片(在之后章节讲解);

3. 可以直接在字符串中添加html代码;

4. app.exec_()用来执行应用,sys.exit()退出程序(exec就是英文当中的execute【执行】的缩写,这样记就容易了)。

 

posted @ 2019-09-11 23:19  nclong  阅读(419)  评论(0)    收藏  举报