PyQt5是一套来自Digia的Qt5应用框架和Python的粘合剂。支持Python2.x和Python3.x版本。
PyQt5以一套Python模块的形式来实现功能。它包含了超过620个类,600个方法和函数。它是一个多平台的工具套件,它可以运行在所有的主流操作系统中,包含Unix,Windows和Mac OS。PyQt5采用双重许可模式。开发者可以在GPL和社区授权之间选择。
PyQt5的类被划分在几个模块中,下面列出了这些模块:
PyQt5不向后兼容PyQt4;这是一些在PyQt5中的重要改变。然而,将旧代码迁移到新的版本中并不是非常困难。不同点如下:
Python 模块已经被改写. 一些模块被舍弃 (QtScript), 部分的模块被分割成子模块 (QtGui, QtWebKit).
新的模块被引进, 包含 QtBluetooth, QtPositioning, 和 Enginio.
PyQt5 只支持最新风格的信号和槽的写法. SIGNAL()和SLOT()的调用将不会被长时间支持.
PyQt5 不支持任何在Qt 5.0版本中弃用或取消的API.
安装
pip install pyqt5
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
def show_w():
"""显示窗口"""
app = QApplication(sys.argv) # 所有的PyQt5应用必须创建一个应用(Application)对象。
# sys.argv参数是一个来自命令行的参数列表。
w = QWidget() # Qwidget组件是PyQt5中所有用户界面类的基础类。我们给QWidget提供了默认的构造方法。
# 默认构造方法没有父类。没有父类的widget组件将被作为窗口使用。
w.resize(500, 500) # resize()方法调整了widget组件的大小。它现在是500px宽,500px高。
w.move(500, 100) # move()方法移动widget组件到一个位置,这个位置是屏幕上x=500,y=200的坐标。
w.setWindowTitle('my python') # 设置了窗口的标题。这个标题显示在标题栏中。
w.setWindowIcon(QIcon('图标.png')) # 设置了窗口的图标。 显示在左上角。
w.show() # show()方法在屏幕上显示出widget。一个widget对象在这里第一次被在内存中创建,并且之后在屏幕上显示。
sys.exit(app.exec_()) # 应用进入主循环。在这个地方,事件处理开始执行。主循环用于接收来自窗口触发的事件,
# 并且转发他们到widget应用上处理。如果我们调用exit()方法或主widget组件被销毁,主循环将退出。
# sys.exit()方法确保一个不留垃圾的退出。系统环境将会被通知应用是怎样被结束的。
if __name__ == '__main__':
show_w()
引入相关模块
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip, QDesktopWidget, QMessageBox,QTextEdit,QLabel,
QPushButton, QApplication,QMainWindow, QAction, qApp, QHBoxLayout, QVBoxLayout,QGridLayout,
QLineEdit)
from PyQt5.QtGui import QFont,QIcon
from PyQt5.QtCore import QCoreApplication
提示文本
class PromptText(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10)) # 这个静态方法设置了用于提示框的字体。
# 这里使用10px大小的SansSerif字体。
self.setToolTip('This is a QWidget widget') # 调用setTooltip()方法创建提示框。
# 可以在提示框中使用富文本格式。
btn = QPushButton('Button', self) # 创建按钮
btn.setToolTip('This is a QPushButton widget') # 设置按钮提示框
btn.resize(btn.sizeHint()) # 改变按钮大小
btn.move(300, 100) # 移动按钮位置
self.setGeometry(300, 100, 600, 600)
self.setWindowTitle('Tooltips')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = PromptText()
sys.exit(app.exec_())
按钮:
QPushButton(string text, QWidget parent = None)
# text参数是将显示在按钮中的内容。
# parent参数是一个用来放置我们按钮的组件。在下文例子中将会是QWidget组件。
# 一个应用的组件是分层结构的。在这个分层内,大多数组件都有父类。没有父类的组件是顶级窗口。
明显的关闭窗口的方法是点击标题栏的X标记。
# ##***关闭窗口***## #
class CloseW(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
qbtn = QPushButton('Quit', self) # 创建了一个按钮。按钮是一个QPushButton类的实例。
# 构造方法的第一个参数是显示在button上的标签文本。第二个参数是父组件。
# 父组件是Example组件,它继承了QWiget类。
qbtn.clicked.connect(QCoreApplication.instance().quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(500, 50)
self.setGeometry(300, 100, 600, 600)
self.setWindowTitle('excise')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = CloseW()
sys.exit(app.exec_())
信号&槽机制
qbtn.clicked.connect(QCoreApplication.instance().quit)
在PyQt5中,事件处理系统由信号&槽机制建立。如果我们点击了按钮,信号clicked被发送。槽可以是Qt内置的槽或Python 的一个方法调用。