简介
PyQt6 是基于 Python 的一系列模块。它是一个多平台的工具包,可以在包括 Unix、Windows 和 Mac OS 在内的大部分主要操作系统上运行。
安装
pip install PyQt6
模块
- QtCore
- QtGui
- QtWidgets
- QtDBus
- QtNetwork
- QtHelp
- QtXml
- QtSvg
- QtSql
- QtTest
QtCore
模块是非 GUI 的核心库。这个模块用来处理时间、文件、目录、各种类型的数据、流 (stream)、URLs,mime 类型、线程和进程。
QtGui
有窗口系统集成、事件处理、2D 图形,基本图像、字体、文本的类。
QtWidgets
有创建经典风格的用户界面的类。
QtDBus
是使用 D-Bus 处理 IPC 通讯的类。
QtNetwork
是网络变成类,这些类使网络编程变得更容易,可移植性也更好,方便了 TCP/IP 和 UDP 服务端和客户端编程。
QtHelp
包含了创建、查看和搜索文档的类。
QtXml
包含了处理 XML 文件的类,实现了 SAX 和 DOM API。
QtSvg
提供了显示 SVG 的类,可缩放矢量图形 (SVG) 是一种描述二维图像和图像应用的 XML 语言。
QtSql
模块提供了数据库的类,
QtTest
提供了可以对 PyQt6 应用进行单元测试的工具。
第一个程序
#!/usr/bin/python
import sys
from PyQt6.QtWidgets import QApplication, QWidget
def main():
# 创建一个应用程序对象 ,sys.argv 获取命令行的参数列表
app = QApplication(sys.argv)
w = QWidget()
# 设置窗口尺寸
w.resize(250, 200)
# move 移动到屏幕的指定坐标
w.move(300, 300)
# 设置窗口标题
w.setWindowTitle('first PyQt')
w.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
窗口居中
#!/usr/bin/python
import sys
from PyQt6.QtWidgets import QWidget, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(350, 250)
self.center()
self.setWindowTitle('Center')
self.show()
def center(self):
# 得到一个矩形的窗口,这里可以放置所有类型的窗口
qr = self.frameGeometry()
# 从屏幕属性里计算出分辨率,然后计算出中心点位置。
cp = self.screen().availableGeometry().center()
# 把矩形窗口的中心点放置到屏幕窗口的中心点
qr.moveCenter(cp)
# 把应用窗口的左上方点坐标移动到矩形窗口的左上方
self.move(qr.topLeft())
def main():
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec())
if __name__ == '__main__':
main()
弹窗
#!/usr/bin/python
import sys
from PyQt6.QtWidgets import QWidget, QMessageBox, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 200)
self.setWindowTitle('Message box')
self.show()
# 关闭 QWidget 操作会产生 QCloseEvent 事件。重新实现 closeEvent 事件处理,替换部件的默认行为。
def closeEvent(self, event):
"""
带有两个按钮的消息框:是和否。
第一个参数是标题栏,
第二个参数是对话框显示的消息文本,
第三个参数是对话框中的按钮组合,
最后一个参数是默认选中的按钮
"""
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.StandardButton.Yes |
QMessageBox.StandardButton.No, QMessageBox.StandardButton.No)
if reply == QMessageBox.StandardButton.Yes:
event.accept()
else:
event.ignore()
def main():
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec())
if __name__ == '__main__':
main()