PyQt5介绍
pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。本教程使用Python 3。Qt库是最强大的GUI库之一。pyqt5的官方网站http://www.riverbankcomputing.co.uk/news。
pyqt5的类别分为几个模块,包括以下:
- QtCore
- QtGui
- QtWidgets
- QtMultimedia
- QtBluetooth
- QtNetwork
- QtPositioning
- Enginio
- QtWebSockets
- QtWebKit
- QtWebKitWidgets
- QtXml
- QtSvg
- QtSql
- QtTest
QtCore:包含了核心的非GUI功能。此模块用于处理时间、文件和目录、各种数据类型、流、URL、MIME类型、线程或进程。
QtGui包含类窗口系统集成、事件处理、二维图形、基本成像、字体和文本。
qtwidgets模块包含创造经典桌面风格的用户界面提供了一套UI元素的类。
QtMultimedia包含的类来处理多媒体内容和API来访问相机和收音机的功能。
Qtbluetooth模块包含类的扫描设备和连接并与他们互动。描述模块包含了网络编程的类。这些类便于TCP和IP和UDP客户端和服务器的编码,使网络编程更容易和更便携。
Qtpositioning包含类的利用各种可能的来源,确定位置,包括卫星、Wi-Fi、或一个文本文件。
Enginio模块实现了客户端库访问Qt云服务托管的应用程序运行时。
Qtwebsockets模块包含实现WebSocket协议类。
QtWebKit包含一个基于Webkit2图书馆Web浏览器实现类。
Qtwebkitwidgets包含的类的基础webkit1一用于qtwidgets应用Web浏览器的实现。
QtXml包含与XML文件的类。这个模块为SAX和DOM API提供了实现。
QtSvg模块提供了显示SVG文件内容的类。可伸缩矢量图形(SVG)是一种描述二维图形和图形应用的语言。
QtSql模块提供操作数据库的类。
QtTest包含的功能,使pyqt5应用程序的单元测试
安装pyqt5
pip install pyqt5
pip install pyqt5-tools
简单例子:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI() # 界面绘制交给InitUi方法
def initUI(self):
# 设置窗口的位置和大小
#self.setGeometry(positionX, PositionY, Length, width)
self.setGeometry(300, 300, 300, 200)
# 设置窗口的标题
self.setWindowTitle('python pyqt5 learning')
# 设置窗口的图标,引用当前目录下的web.png图片
self.setWindowIcon(QIcon('python.jpg'))
# 显示窗口
self.show()
if __name__ == '__main__':
# 创建应用程序和对象
app = QApplication(sys.argv)
execute = Example()
sys.exit(app.exec_())
按钮及提示语
import sys
from PyQt5.QtWidgets import QWidget, QToolTip,QPushButton, QApplication
from PyQt5.QtGui import QFont, QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
QToolTip.setFont(QFont('SansSerif', 10))
# 创建一个提示,我们称之为settooltip()方法。我们可以使用丰富的文本格式
self.setToolTip('This is a <b>QWidget</b> widget')
# 创建一个PushButton并为他设置一个tooltip
btn = QPushButton('Button', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')
# btn.sizeHint()显示默认尺寸
btn.resize(btn.sizeHint())
# 移动窗口的位置
btn.move(50, 50)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('python pyqt5 learning')
self.setWindowIcon(QIcon('python.jpg'))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
execute = Example()
sys.exit(app.exec_())
关闭窗口
import sys
from PyQt5.QtWidgets import QWidget, QToolTip,QPushButton, QApplication
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
QToolTip.setFont(QFont('SansSerif', 10))
# 创建一个提示,我们称之为settooltip()方法。我们可以使用丰富的文本格式
self.setToolTip('This is a <b>QWidget</b> widget')
# 创建一个PushButton并为他设置一个tooltip
btn1 = QPushButton('Button', self)
btn1.setToolTip('This is a <b>QPushButton</b> widget')
btn2 = QPushButton('Quit', self)
btn2.setToolTip('This is a <b>Quit</b> widget')
# btn.sizeHint()显示默认尺寸
btn1.resize(btn1.sizeHint())
btn2.resize(btn2.sizeHint())
# 移动窗口的位置
btn1.move(50, 50)
btn2.move(180, 50)
btn2.clicked.connect(QCoreApplication.instance().quit)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('python pyqt5 learning')
self.setWindowIcon(QIcon('python.jpg'))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
execute = Example()
sys.exit(app.exec_())
关闭窗口
import sys
from PyQt5.QtWidgets import QWidget, QToolTip,QPushButton, QApplication, QMessageBox
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
QToolTip.setFont(QFont('SansSerif', 10))
# 创建一个提示,我们称之为settooltip()方法。我们可以使用丰富的文本格式
self.setToolTip('This is a <b>QWidget</b> widget')
# 创建一个PushButton并为他设置一个tooltip
btn1 = QPushButton('Button', self)
btn1.setToolTip('This is a <b>QPushButton</b> widget')
btn2 = QPushButton('Quit', self)
btn2.setToolTip('This is a <b>Quit</b> widget')
# btn.sizeHint()显示默认尺寸
btn1.resize(btn1.sizeHint())
btn2.resize(btn2.sizeHint())
# 移动窗口的位置
btn1.move(50, 50)
btn2.move(180, 50)
btn2.clicked.connect(self.closeEvent)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('python pyqt5 learning')
self.setWindowIcon(QIcon('python.jpg'))
self.show()
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
if event:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
execute = Example()
sys.exit(app.exec_())
窗口在屏幕中间显示
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,QPushButton, QApplication,
QMessageBox,QDesktopWidget)
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
QToolTip.setFont(QFont('SansSerif', 10))
# 创建一个提示,我们称之为settooltip()方法。我们可以使用丰富的文本格式
self.setToolTip('This is a <b>QWidget</b> widget')
# 创建一个PushButton并为他设置一个tooltip
btn1 = QPushButton('Button', self)
btn1.setToolTip('This is a <b>QPushButton</b> widget')
btn2 = QPushButton('Quit', self)
btn2.setToolTip('This is a <b>Quit</b> widget')
# btn.sizeHint()显示默认尺寸
btn1.resize(btn1.sizeHint())
btn2.resize(btn2.sizeHint())
# 移动窗口的位置
btn1.move(50, 50)
btn2.move(180, 50)
btn2.clicked.connect(self.closeEvent)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('python pyqt5 learning')
self.setWindowIcon(QIcon('python.jpg'))
self.center()
self.show()
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
if event:
event.ignore()
# 控制窗口显示在屏幕中心的方法
def center(self):
# 获得窗口
qr = self.frameGeometry()
# 获得屏幕中心点
cp = QDesktopWidget().availableGeometry().center()
# 显示到屏幕中心
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
execute = Example()
sys.exit(app.exec_())