目录
- PySide6简介与安装
- 第一个PySide6应用:窗口与控件基础
- 布局管理与窗口设计
- 信号与槽机制详解
- 常用控件解析(按钮、标签、文本框、列表等)
- 事件处理与用户交互
- 样式表(QSS)美化界面
- 多线程与异步任务处理
- 界面设计工具Qt Designer使用
- 打包与发布桌面应用
- 进阶技巧:自定义控件与动画
- 实战示例:制作简单的文本编辑器
1. PySide6简介与安装
- PySide6是Qt官方提供的Python绑定,功能强大,跨平台,适合桌面应用开发。
- 安装:
pip install PySide6
2. 第一个PySide6应用:窗口与控件基础
from PySide6.QtWidgets import QApplication, QLabel, QWidget
app = QApplication([])
window = QWidget()
window.setWindowTitle("PySide6 入门示例")
window.resize(400, 300)
label = QLabel("你好,PySide6!", parent=window)
label.move(150, 130)
window.show()
app.exec()
3. 布局管理与窗口设计
- 使用布局管理器自动调整控件位置和大小
- 常用布局:
QHBoxLayout
,QVBoxLayout
,QGridLayout
示例:
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout(window)
btn1 = QPushButton("按钮1")
btn2 = QPushButton("按钮2")
layout.addWidget(btn1)
layout.addWidget(btn2)
window.show()
app.exec()
4. 信号与槽机制详解
- Qt的核心机制,实现控件间通信
- 连接信号到槽(函数):
def on_button_clicked():
print("按钮被点击")
btn = QPushButton("点我")
btn.clicked.connect(on_button_clicked)
5. 常用控件解析
- QPushButton: 按钮
- QLabel: 标签
- QLineEdit: 单行文本输入
- QTextEdit: 多行文本编辑
- QComboBox: 下拉框
- QListWidget: 列表
6. 事件处理与用户交互
- 重写控件的事件方法(如
mousePressEvent
) - 示例:
from PySide6.QtWidgets import QLabel
from PySide6.QtCore import Qt
class ClickLabel(QLabel):
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
print("标签被左键点击")
label = ClickLabel("点击我")
7. 样式表(QSS)美化界面
- 类似CSS,定义控件的外观
- 例如:
btn.setStyleSheet("background-color: #3498db; color: white; border-radius: 8px;")
8. 多线程与异步任务处理
- 使用
QThread
避免界面卡顿 - 简单示例:
from PySide6.QtCore import QThread, Signal
class Worker(QThread):
finished = Signal()
def run(self):
# 长时间任务
self.sleep(5)
self.finished.emit()
worker = Worker()
worker.finished.connect(lambda: print("任务完成"))
worker.start()
9. 界面设计工具Qt Designer使用
- 可视化设计UI,生成
.ui
文件 - 使用
pyside6-uic
转换为Python代码
pyside6-uic mydesign.ui -o mydesign.py
10. 打包与发布桌面应用
- 使用
PyInstaller
打包:
pyinstaller --onefile your_app.py
- 配置图标、隐藏控制台等高级选项
11. 进阶技巧:自定义控件与动画
- 继承控件实现自定义行为
- 使用
QPropertyAnimation
实现动画效果
12. 实战示例:制作简单文本编辑器
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextEdit, QPushButton
class TextEditor(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("简易文本编辑器")
self.resize(600, 400)
self.layout = QVBoxLayout(self)
self.text_edit = QTextEdit()
self.save_btn = QPushButton("保存")
self.layout.addWidget(self.text_edit)
self.layout.addWidget(self.save_btn)
self.save_btn.clicked.connect(self.save_text)
def save_text(self):
content = self.text_edit.toPlainText()
with open("output.txt", "w", encoding="utf-8") as f:
f.write(content)
print("保存成功")
if __name__ == "__main__":
app = QApplication([])
editor = TextEditor()
editor.show()
app.exec()
发表回复