引言
PyQt和PySide是基于Qt框架的Python图形界面开发利器,能够轻松构建跨平台的桌面应用程序。它们提供了Qt生态的完整功能:丰富的控件库、事件处理系统、样式动画、数据库操作,甚至支持QML来打造现代化的用户界面。
两者的核心区别在于许可证:PyQt采用GPL或商业授权,而PySide(Qt官方维护版本)使用更宽松的LGPL协议,更适合商业项目开发。
在本教程中,我们将从环境搭建开始,逐步深入到数据库集成、界面美化和应用打包,带你全面掌握这两大Python GUI库的使用技巧。
安装与配置
安装PyQt5和PyQt6
# PyQt5(稳定版)
pip install pyqt5 pyqt5-tools
# PyQt6(最新版)
pip install pyqt6 pyqt6-tools
安装PySide2和PySide6
# PySide2(对应Qt 5)
pip install pyside2
# PySide6(推荐版本)
pip install pyside6
验证安装
# PyQt5验证
from PyQt5.QtWidgets import QApplication
print("PyQt5安装成功")
# PySide6验证
from PySide6.QtWidgets import QApplication
print("PySide6安装成功")
创建第一个应用
带按钮的简单窗口
PyQt5版本
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('我的第一个PyQt5应用')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('点我')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("按钮被点击了!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
PySide6版本
from PySide6.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
import sys
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('我的第一个PySide6应用')
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout()
button = QPushButton('点我')
button.clicked.connect(self.on_click)
layout.addWidget(button)
self.setLayout(layout)
def on_click(self):
print("按钮被点击了!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
Qt应用架构
核心组件
QApplication — 每个Qt应用的核心对象,负责管理事件循环、处理系统事件并协调所有控件的运行。
QWidget — 所有界面元素的基类,可以作为容器容纳其他控件。
QMainWindow — 专为主窗口设计的控件,支持菜单栏、工具栏、状态栏和中央控件区域。
QDialog — 对话框基类,支持模态和非模态两种显示模式。
应用生命周期
- 创建QApplication实例
- 创建并配置界面控件
- 显示主窗口
- 通过exec()或exec_()启动事件循环
- 应用退出