PyQt5是一套来自Digia的Qt5应用框架和Python的粘合剂。支持Python2.x和Python3.x版本。本教程使用Pyhton 3。Qt库是最强大的GUI支持库的一种。PyQt5的官方主页是www.riverbankcomputing.co.uk/news。是Riverbank Computing开发了PyQt5。
PyQt5以一套Python模块的形式来实现功能。它包含了超过620个类,600个方法和函数。它是一个多平台的工具套件,它可以运行在所有的主流操作系统中,包含Unix,Windows和Mac OS。PyQt5采用双重许可模式。开发者可以在GPL和社区授权之间选择。
应用场景:
主要应用到可视化界面中,类比较少,使用起来简单,学习简单
from PyQt5.QtWidgets import QApplication,QWidget
import sys
if name == ‘main’:
# 所有的PyQt5应用必须创建一个应用(Application)对象
# sys.argv参数是一个来自命令行的参数列表。Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
app = QApplication(sys.argv)
# Qwidget组件是PyQt5中所有用户界面类的基础类
# 我们给QWidget提供了默认的构造方法。默认构造方法没有父类。没有父类的widget组件将被作为窗口使用。
w = QWidget()
# resize()方法调整了widget组件的大小。它现在是250px宽,150px高。
w.resize(250,150)
# move()方法移动widget组件到一个位置,这个位置是屏幕上x=300,y=300的坐标。
w.move(300,300)
# 这里我们设置了我们窗口的标题。这个标题显示在标题栏中。
w.setWindowTitle(‘Simple’)
# show()方法在屏幕上显示出widget。一个widget对象在这里第一次被在内存中创建,并且之后在屏幕上显示。
w.show()
# 调用exit()方法或主widget组件被销毁,主循环将退出。sys.exit()方法确保一个不留垃圾的退出。系统环境将会被通知应用是怎样被结束的。
# exec_()方法有一个下划线。因为exec是Python保留关键字。因此,用exec_()来代替。
sys.exit(app.exec_())
运行的结果
接下来我们做一个简单的应用图标
代码如下
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
# 继承initUI方法
self.initUI()
def initUI(self):
# 将窗口在屏幕上显示,并设置了它的尺寸
# 前两个参数定位了窗口的x轴和y轴位置。第三个参数是定义窗口的宽度,第四个参数是定义窗口的高度
# 事实上,这是将resize()和move()方法融合在一个方法内
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))
self.show()
if name == ‘main’:
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行结果
显示一个简单的显示一个提示文本
代码如下:
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
QPushButton, QApplication)
from PyQt5.QtGui import QFont
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 为两个PyQt5组件显示了提示框。
QToolTip.setFont(QFont('SansSerif', 10))
# 静态方法设置了用于提示框的字体。我们使用10px大小的SansSerif字体
self.setToolTip('This is a <b>QWidget</b> widget')
# 为了创建提示框,我们调用了setTooltip()方法。我们可以在提示框中使用富文本格式
btn = QPushButton('Button', self)
# 我们可以在提示框中使用富文本格式
btn.setToolTip('This is a <b>QPushButton</b> widget')
# 创建了一个按钮组件并且为它设置一个提示框
# setHint()方法给了按钮一个推荐的大小。
btn.resize(btn.sizeHint())
btn.move(50, 50)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Tooltips')
self.show()
if name == ‘main’:
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行结果如下
关闭窗口
明显的关闭窗口的方法是点击标题栏的X标记。在下面的例子中,我们将展示怎么通过程序来关闭我们的窗口。我们将简单的触及信号和槽机制。
代码如下:
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
创建一个退出按钮,一旦按下按钮,应用将会结束
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 来自QtCore的对象模块
qbtn = QPushButton('Quit', self)
# 构造方法的第一个参数是显示在button上的标签文本。第二个参数是父组件。父组件是Example组件,它继承了QWiget类。
# qbtn.clicked.connect(QCoreApplication)
# QCoreApplication类包含了主事件循环;它处理和转发所有事件
# instance()方法给我们返回一个实例化对象
# 事件通信在两个对象之间进行:发送者和接受者。发送者是按钮,接受者是应用对象
qbtn.clicked.connect(QCoreApplication.instance().quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Quit button')
self.show()
if name == ‘main’:
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行结果: