目录

  1. PySide6简介与安装
  2. 第一个PySide6应用:窗口与控件基础
  3. 布局管理与窗口设计
  4. 信号与槽机制详解
  5. 常用控件解析(按钮、标签、文本框、列表等)
  6. 事件处理与用户交互
  7. 样式表(QSS)美化界面
  8. 多线程与异步任务处理
  9. 界面设计工具Qt Designer使用
  10. 打包与发布桌面应用
  11. 进阶技巧:自定义控件与动画
  12. 实战示例:制作简单的文本编辑器

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. 布局管理与窗口设计

  • 使用布局管理器自动调整控件位置和大小
  • 常用布局:QHBoxLayoutQVBoxLayoutQGridLayout

示例:

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()