Skip to content

About

通过可直接运行的代码示例讲解 PyQt 5 常用基础控件。附学习资源、demo分享。

Topics

Resources

Stars

1.1k stars

Watchers

10 watching

Forks

Latest commit

 

History

492 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

PyQt5 代码笔记

用代码学 PyQt5 !

PyQt Version license Github stars GitHub forks Code style: black Imports: isort

重要说明!!

新版 「PySide6 代码教程」 初稿已经接近完成!本项目的更新也渐趋结束,新内容的补充完善会集中在新版教程。

新教程有如下升级:

  • Python 3.10 + PySide 6.3,版本新、功能更强大
  • 项目组织结构更清晰
  • 代码中注释讲解比例更高、更详细
  • PySide 由 Qt 官方提供支持,比 PyQt 许可更宽松、文档更全面

欢迎新老读者前往阅读和提供贡献!

基本说明

  • 每个模块(.py文件)都可运行,展示了各种控件的各种功能属性作用,代码中有注释讲解
  • 在自己的机器上实际运行一下,仔细观察一下每个属性值的改变会怎样影响控件的外观行为,可能比静态的文档教程更有效。
  • 目前还在更新完善中,也期待小伙伴加入,共同完善这个仓库(提交 PR 或者 联系作者 )
  • 由于作者精力有限,Gitee仓库 的更新维护可能不及时,最新修改以 GitHub仓库 为准

使用方法

  1. Star 收藏本仓库,便于查找
  2. 克隆本仓库到本地( git clone https://github.com/muziing/PyQt_practice.git ),或下载 zip 归档并解压
  3. 创建虚拟环境并激活
    • Windows: python -m venv venv venv\Scripts\activate
    • Linux/macOS: python3 -m venv venv . venv/bin/activate
  4. 在命令行执行 pip install -r requirements.txt 安装依赖
  5. 进入你感兴趣的控件对应的文件夹,运行任何一个.py文件观察效果
  6. 对于大多数目录,首个文件都是一个 Markdown 文档,为 Qt 官方文档对应的中文翻译并简单整理版

以 47-QListView 目录下的 02-QListView-自动换行、布局间距、对齐、单词省略.py 为例:

# 02-QListView-自动换行、布局间距、对齐、单词省略.py
from PyQt5.Qt import *
import sys


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QListView-自动换行、布局间距、对齐、单词省略")
        self.resize(500, 500)
        self.data_list = [f"Item{i}" for i in range(15)]  # 将数据列表保存在属性中
        self.data_list.append("Something very very long")  # 再添加一个特殊的很长的项
        self.setup_ui()

    def setup_ui(self):
        btn = QPushButton("增大Spacing", self)
        btn.move(350, 200)
        list_view = QListView(self)  # 创建list view对象
        list_view.move(100, 100)
        list_view.resize(200, 200)
        slm = QStringListModel()  # 创建model模型
        slm.setStringList(self.data_list)  # 为模型设置数据
        list_view.setModel(slm)  # 为视图设置模型

        # -------自动换行---------
        list_view.setWrapping(True)  # 打开自动换行
        # 对于 Flow 为 TopToBottom,应该叫做“自动换列”,垂直空间不能一次全部显示所有项时,再右侧再加一列显示,而不是加滚动条

        # -------布局间距--------
        list_view.setSpacing(10)  # 默认为0

        def test_slot():
            """测试按钮的槽函数"""
            list_view.setSpacing(list_view.spacing() + 5)  # 修改此值会导致重新布局

        btn.clicked.connect(test_slot)

        # --------对齐-----------
        # setItemAlignment 只有在 ListMode 为 TopToBottom 且 wrapping 打开时才有效
        # list_view.setItemAlignment(Qt.AlignTop)  # 垂直靠上对齐
        list_view.setItemAlignment(Qt.AlignVCenter | Qt.AlignLeft)  # 垂直居中,水平靠左对齐

        # ------单词省略------
        list_view.setWordWrap(True)  # 启用单词省略,太长的文本将收到省略号...中
        # list_view.setTextElideMode(Qt.ElideLeft)  # 省略号在最左侧
        list_view.setTextElideMode(Qt.ElideMiddle)  # 省略号在中间
        # list_view.setTextElideMode(Qt.ElideNone)  # 无省略号,但是最后的内容仍然会被省略


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())
  1. 直接运行这段代码即可看到程序窗口和上面的 QListView 控件
  2. 注释/取消注释第 26 行代码,以观察自动换行属性的效果
  3. 按下"增大Spacing"按钮,以观察不同的 Spacing 值的显示效果
  4. 每次注释掉40/41行代码中的一个,运行另一行,以观察不同的 ItemAlignment 值的对齐效果
  5. 每次注释掉45/46/47行代码中的一个,运行剩下的那行,以观察不同的省略号模式的效果
  6. 在同一目录(47-QListView)下的第一个文件 00-QListView-列表视图.md 中查看更多信息

PyQt 相关分享

一些 PyQt 相关文档、教程、Demo、QSS 美化等收集整理

GitHub PyQt 相关仓库收集

打赏

如果本项目对你有帮助,希望可以请我喝一杯冰可乐 🍺。

微信收款码

点击图片以在线浏览带有超链接的思维导图

思维导图目录

  1. PyQt5-初体验.py
  2. PyQt5程序基本结构分析.py
  3. 面向对象版本代码.py
  4. 控件类的继承关系.py
  1. QObject.py
  2. QObject_2.py
  3. 信号的操作.py
  4. 信号的操作(小案例1).py
  5. 信号的操作(小案例2).py
  6. QObject类型判定.py
  7. QObject类型判定-案例.py
  8. QObject对象删除.py
  9. PyQt事件机制.py
  10. QObject定时器.py
  11. QObject定时器-案例.py
  1. QWidget-用户界面的基类.md
  2. QWidget-简介.py
  3. QWidget-大小位置.py
  4. QWidget-案例.py
  5. QWidget-最大最小尺寸-API.py
  6. QWidget-内容边距操作.py
  7. QWidget-鼠标相关操作.py
  8. QWidget-鼠标跟踪-API.py
  9. QWidget-鼠标相关操作-案例.py
  10. QWidget-案例1-鼠标移入移出.py
  11. QWidget-案例2-键盘点击案例.py
  12. QWidget-案例3-鼠标拖动窗口案例.py
  13. QWidget-父子关系-API.py
  14. QWidget-父子关系-案例.py
  15. QWidget-层级关系调整.py
  16. QWidget-顶层窗口相关操作.py
  17. QWidget-窗口状态.py
  18. QWidget-窗口最大化最小化、WindowFlags笔记.py
  19. QWidget-顶层窗口操作-案例.py
  20. QWidget-交互状态-显示隐藏控件、设置控件不可用.py
  21. QWidget-交互状态-是否被编辑、是否为活动窗口.py
  22. QWidget-交互状态-关闭与释放.py
  23. QWidget-交互状态-案例-登录界面.py
  24. QWidget-信息提示.py
  25. QWidget-焦点控制.py
  1. QAbstractButton-按钮的抽象基类.md
  2. QAbstractButton-简单介绍.py
  3. QAbstractButton-功能测试.py
  4. QAbstractButton-状态设置.py
  5. QAbstractButton-排他性.py
  6. QAbstractButton-模拟点击.py
  7. QAbstractButton-点击有效区域.py
  8. QAbstractButton-可用信号.py
  1. QPushButton-普通按钮.md
  2. QPushButton-构造函数.py
  3. QPushButton-菜单.py
  4. QPushButton-扁平化.py
  5. QPushButton-默认处理.py
  6. QPushButton-右键菜单.py
  7. QCommandLinkButton.py
  1. QToolButton-工具栏按钮.md
  2. QToolButton-创建与基本显示.py
  3. QToolButton-样式设置.py
  4. QToolButton-箭头.py
  5. QToolButton-自动提升.py
  6. QToolButton-菜单和弹出模式.py
  7. QToolButton-可用信号.py
  1. QRadioButton-单选按钮.md
  2. QRadioButton-创建和基本设置、信号.py
  3. QRadioButton-多组互斥问题.py
  1. QButtonGroup-按钮组.md
  2. QButtonGroup-创建与使用.py
  3. QButtonGroup-查看按钮、移除按钮、id操作、取消独占.py
  4. QButtonGroup-信号.py
  1. QCheckButton-复选框.md
  2. QCheckBox-功能使用.py
  3. QCheckBox-信号.py
  1. QLineEdit-单行文本编辑器.md
  2. QLineEdit-创建、插入与获取内容.py
  3. QLineEdit-文本的设置与获取-案例.py
  4. QLineEdit-文本输出模式.py
  5. QLineEdit-登录案例.py
  6. QLineEdit-占位文本设置、清空按钮.py
  7. QLineEdit-添加自定义行为-明密文切换.py
  8. QLineEdit-自动补全.py
  9. QLineEdit-长度和只读限制.py
  10. QLineEdit-验证器的使用.py
  11. QLineEdit-验证器-掩码.py
  12. QLineEdit-文本修改状态.py
  13. QLineEdit-光标位置控制.py
  14. QLineEdit-文本边距设定.py
  15. QLineEdit-对齐方式.py
  16. QLineEdit-编辑功能.py
  17. QLineEdit-编辑功能-选中.py
  18. QLineEdit-信号.py
  1. QFrame-框架控件的基类.md
  2. QFrame-创建.py
  3. QFrame-功能作用.py
  1. QAbstractScrollArea-滚动区域的低级抽象.md
  2. QAbstractScrollArea.py
  1. QTextEdit-文本编辑器.md
  2. QTextEdit-创建.py
  3. QTextEdit-占位文本的设置.py
  4. QTextEdit-文本内容的设置.py
  5. QTextEdit-文本光标-插入文字、图片、句子.py
  6. QTextEdit-文本光标-插入列表.py
  7. QTextEdit-文本光标-插入表格.py
  8. QTextEdit-文本光标-插入文本块.py
  9. QTextEdit-文本光标-插入文本框架.py
  10. QTextEdit-文本光标-格式操作.py
  1. QPlainTextEdit-纯文本编辑器.md
  2. QPlainTextEdit-创建、占位提示文本、只读、字符格式.py
  3. QPlainTextEdit-软换行、覆盖模式、tab控制.py
  4. QPlainTextEdit-文本操作、块操作.py
  5. QPlainTextEdit-放大缩小、滚动内容以显示光标.py
  6. QPlainTextEdit-光标操作.py
  7. QPlainTextEdit-信号.py
  8. QPlainTextEdit-案例-显示行号.py
  1. QKeySequenceEdit-快捷键编辑器.md
  2. QKeySequenceEdit-创建、功能、信号.py
  3. QKeySequence-补充.py
  1. QAbstractSpinBox-数字设定框的抽象基类.md
  2. QAbstractSpinBox-创建、模拟子类化、获取与设置控件内容.py
  3. QAbstractSpinBox-长按累加加速、只读.py
  4. QAbstractSpinBox-对齐方式、周边框架、清空文本内容、按钮标识.py
  5. QAbstractSpinBox-内容验证、信号.py
  1. QSpinBox-数字设定框.md
  2. QSpinBox-创建、最大值最小值范围、数值循环.py
  3. QSpinBox-步长设置、前后缀和特殊文本、进制设置.py
  4. QSpinBox-值的设置和获取、自定义展示格式.py
  5. QSpinBox-信号.py
  1. QDoubleSpinBox-浮点数设定框.md
  2. QDoubleSpinBox-创建、数值范围、数值循环、设置步长、前后缀.py
  3. QDoubleSpinBox-最小值特殊文本、小数位数、设置与获取数值、自定义展示格式.py
  4. QDoubleSpinBox-信号.py
  1. QDateTimeEdit-日期时间编辑器.md
  2. QDateTime、QDate、QTime.py
  3. QDateTimeEdit-创建、显示格式、section操作.py
  1. QDateEdit-日期编辑器.md
  1. QTimeEdit-时间编辑器.md
  1. QComboBox-组合下拉框.md
  2. QComboBox-创建、数据操作.py
  3. QComboBox-模型操作、视图操作.py
  4. QComboBox-数据获取.py
  5. QComboBox-数据限制.py
  6. QComboBox-功能.py
  7. QComboBox-信号.py
  8. QComboBox-案例.py
  1. QFontComboBox-字体下拉框.md
  2. QFontComboBox-功能作用.py
  1. QAbstractSlider-滑块控件抽象基类.md
  2. QAbstractSlider-创建、数值范围、当前数值、步长.py
  3. QAbstractSlider-是否追踪、滑块位置、倒立外观、操作反转、滑块方向.py
  4. QAbstractSlider-是否按下、信号.py
  1. QSlider-滑块控件.md
  2. QSlider-刻度控制.py
  3. QSlider-拓展案例.py
  4. QSlider-鼠标跳转优化.py
  1. QScrollBar-滚动条.md
  2. QScrollBar-功能作用.py
  1. QDial-转盘控件.md
  2. QDial-功能作用.py
  1. QRubberBand-选择框线.md
  2. QRubberBand-创建.py
  3. QRubberBand-综合案例.py
  1. QDialog-对话框窗口基类.md
  2. QDialog-模态与非模态、创建.py
  3. QDialog-是否显示尺寸调整控件、常用操作槽、设置和获取数值.py
  4. QDialog-信号.py
  1. QFontDialog-字体选择对话框.md
  2. QFontDialog-创建.py
  3. QFontDialog-弹出方式、选项控制.py
  4. QFontDialog-静态方法.py
  1. QColorDialog-颜色选择对话框.md
  2. QColorDialog-创建.py
  3. QColorDialog-功能作用.py
  4. QColorDialog-静态方法.py
  5. QColorDialog-信号.py
  1. QFileDialog-文件选择对话框.md
  2. QFileDialog-静态方法-弹出文件操作对话框.py
  3. QFileDialog-静态方法-弹出文件夹操作对话框.py
  4. QFileDialog-构造函数、接收模式、默认后缀名、文件模式.py
  5. QFileDialog-名称过滤器、显示信息详细程度、设置指定角色的标签名称.py
  6. QFileDialog-信号.py
  1. QInputDialog-输入对话框.md
  2. QInputDialog-静态方法.py
  3. QInputDialog-创建、功能作用.py
  4. QInputDialog-信号.py
  1. QCalendarWidget-日历控件.md
  1. QLabel-标签控件.md
  2. QLabel-创建、对齐、间距、缩进.py
  3. QLabel-文本格式、伙伴.py
  4. QLabel-内容缩放(图片).py
  5. QLabel-文本交互标识和选中.py
  6. QLabel-外部链接、换行.py
  7. QLabel-内容操作.py
  8. QLabel-信号.py
  1. QLCDNumber-液晶数字显示器.md
  1. QProgressBar-进度条控件.md
  2. QProgressBar-基本、区间范围和当前数值.py
  3. QProgressBar-文本格式设置.py
  4. QProgressBar-文本标签操作、方向、反转.py
  5. QProgressBar-信号.py
  1. QErrorMessage-错误消息对话框.md
  2. QErrorMessage-创建、功能作用.py
  3. QErrorMessage-Debug.py
  1. QProgressDialog-进度条对话框.md
  2. QProgressDialog-创建.py
  3. QProgressDialog-最小等待时间、窗口标题、设置子控件.py
  1. QMessageBox-消息提示框.md
  2. QMessageBox-创建.py
  3. QMessageBox-按钮操作.py
  1. Layout-布局管理器.md
  2. Layout-简单使用.py
  3. QBoxLayout-创建、方向、插入、删除.py
  4. QBoxLayout-空白、伸缩因子.py
  5. QVBoxLayout、QHBoxLayout.py
  6. QFormLayout-创建、行操作(1).py
  7. QFormLayout-行操作(2).py
  8. QFormLayout-行包装策略、对齐、间距、字段增长策略.py
  9. QGridLayout-创建、元素操作.py
  10. QGridLayout-最小列宽行高、拉伸系数、间距控制.py
  11. QGridLayout-原点角、信息获取.py
  12. QStackedLayout-创建、添加插入获取控件.py
  13. QStackedLayout-切换、展示模式、移除控件.py

42 QSS

  1. QSS-Qt样式表.md
  2. QSS-简介.py
  3. QSS-导入外部样式表.py
  1. pyqtSignal-自定义信号.py
  2. pyqtSignal-重载、多个参数.py
  3. pyqtSignal-装饰器自动连接.py
  1. QMainWindow-主窗口控件.md
  2. QMainWindow-创建.py
  3. QMainWindow-QMenuBar-菜单栏.py
  4. QMainWindow-QToolBar-工具栏.py
  5. QMainWindow-QStatusBar-状态栏.py
  1. QDockWidget-浮动停靠控件.md
  1. QAbstractItemView-项目视图的抽象基类.md
  1. QListView-列表视图.md
  2. QListView-创建、方向、布局模式.py
  3. QListView-自动换行、布局间距、对齐、单词省略.py
  4. QListView-布局网格、大小调整模式、移动.py
  1. QTableView-表格视图.md
  1. QTreeView-树视图.md
  1. QTabWidget-标签页控件.md
  2. QTabWidget-创建、父控件关系、标签位置、标签形状.py
  3. QTabWidget-可移动、可关闭、自动隐藏页签、文档模式.py
  4. QTabWidget-设置图标、图标尺寸、省略号模式、按钮滚动.py
  5. QTabWidget-移除页、页不可用、清空页.py
  6. QTabWidget-信号.py
  1. QStackedWidget-堆载窗口控件.md
  1. QListWidget-列表控件.md
  1. QUndoView-撤销视图控件.md
  1. QHeaderView-表头视图.md

共54个目录,249个文件。

代码行数统计工具: github.com/AlDanial/cloc v1.92

Language files blank comment code
Python 202 2328 1540 5301
Markdown 51 1410 0 2295
-------- -------- -------- -------- --------
SUM: 253 3738 1540 7596

About

通过可直接运行的代码示例讲解 PyQt 5 常用基础控件。附学习资源、demo分享。

Topics

Resources

Stars

1.1k stars

Watchers

10 watching

Forks

Releases

Used by

Contributors

Languages