添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Repository files navigation

logo

PyQt5 代码笔记

用代码学 PyQt5 !

  • 每个模块( .py 文件)都可运行,展示了各种控件的各种功能属性作用,代码中有注释讲解
  • 在自己的机器上实际运行一下,仔细观察一下每个属性值的改变会怎样影响控件的外观行为,可能比静态的文档教程更有效。
  • 目前还在更新完善中,也期待小伙伴加入,共同完善这个仓库(提交 PR 或者 联系作者
  • 由于作者精力有限, Gitee仓库 的更新维护可能不及时,最新修改以 GitHub仓库 为准
  • Star 收藏本仓库,便于查找
  • 克隆本仓库到本地( git clone https://github.com/muziing/PyQt_practice.git ),或 下载 zip 归档并解压
  • 创建虚拟环境并激活
  • Windows: python -m venv venv venv\Scripts\activate
  • Linux/macOS: python3 -m venv venv . venv/bin/activate
  • 在命令行执行 pip install -r requirements.txt 安装依赖
  • 进入你感兴趣的控件对应的文件夹,运行任何一个 .py 文件观察效果
  • 对于大多数目录,首个文件都是一个 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_())
  • 直接运行这段代码即可看到程序窗口和上面的 QListView 控件
  • 注释/取消注释第 26 行代码,以观察自动换行属性的效果
  • 按下"增大Spacing"按钮,以观察不同的 Spacing 值的显示效果
  • 每次注释掉40/41行代码中的一个,运行另一行,以观察不同的 ItemAlignment 值的对齐效果
  • 每次注释掉45/46/47行代码中的一个,运行剩下的那行,以观察不同的省略号模式的效果
  • 在同一目录( 47-QListView )下的第一个文件 00-QListView-列表视图.md 中查看更多信息
  • PyQt 相关分享

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

    GitHub PyQt 相关仓库收集

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

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

  • PyQt5-初体验.py
  • PyQt5程序基本结构分析.py
  • 面向对象版本代码.py
  • 控件类的继承关系.py
  • QObject.py
  • QObject_2.py
  • 信号的操作.py
  • 信号的操作(小案例1).py
  • 信号的操作(小案例2).py
  • QObject类型判定.py
  • QObject类型判定-案例.py
  • QObject对象删除.py
  • PyQt事件机制.py
  • QObject定时器.py
  • QObject定时器-案例.py
  • 03 QWidget

  • QWidget-用户界面的基类.md
  • QWidget-简介.py
  • QWidget-大小位置.py
  • QWidget-案例.py
  • QWidget-最大最小尺寸-API.py
  • QWidget-内容边距操作.py
  • QWidget-鼠标相关操作.py
  • QWidget-鼠标跟踪-API.py
  • QWidget-鼠标相关操作-案例.py
  • QWidget-案例1-鼠标移入移出.py
  • QWidget-案例2-键盘点击案例.py
  • QWidget-案例3-鼠标拖动窗口案例.py
  • QWidget-父子关系-API.py
  • QWidget-父子关系-案例.py
  • QWidget-层级关系调整.py
  • QWidget-顶层窗口相关操作.py
  • QWidget-窗口状态.py
  • QWidget-窗口最大化最小化、WindowFlags笔记.py
  • QWidget-顶层窗口操作-案例.py
  • QWidget-交互状态-显示隐藏控件、设置控件不可用.py
  • QWidget-交互状态-是否被编辑、是否为活动窗口.py
  • QWidget-交互状态-关闭与释放.py
  • QWidget-交互状态-案例-登录界面.py
  • QWidget-信息提示.py
  • QWidget-焦点控制.py
  • QAbstractButton-按钮的抽象基类.md
  • QAbstractButton-简单介绍.py
  • QAbstractButton-功能测试.py
  • QAbstractButton-状态设置.py
  • QAbstractButton-排他性.py
  • QAbstractButton-模拟点击.py
  • QAbstractButton-点击有效区域.py
  • QAbstractButton-可用信号.py
  • QPushButton-普通按钮.md
  • QPushButton-构造函数.py
  • QPushButton-菜单.py
  • QPushButton-扁平化.py
  • QPushButton-默认处理.py
  • QPushButton-右键菜单.py
  • QCommandLinkButton.py
  • QToolButton-工具栏按钮.md
  • QToolButton-创建与基本显示.py
  • QToolButton-样式设置.py
  • QToolButton-箭头.py
  • QToolButton-自动提升.py
  • QToolButton-菜单和弹出模式.py
  • QToolButton-可用信号.py
  • QRadioButton-单选按钮.md
  • QRadioButton-创建和基本设置、信号.py
  • QRadioButton-多组互斥问题.py
  • QButtonGroup-按钮组.md
  • QButtonGroup-创建与使用.py
  • QButtonGroup-查看按钮、移除按钮、id操作、取消独占.py
  • QButtonGroup-信号.py
  • 09 QCheckBox

  • QCheckButton-复选框.md
  • QCheckBox-功能使用.py
  • QCheckBox-信号.py
  • QLineEdit-单行文本编辑器.md
  • QLineEdit-创建、插入与获取内容.py
  • QLineEdit-文本的设置与获取-案例.py
  • QLineEdit-文本输出模式.py
  • QLineEdit-登录案例.py
  • QLineEdit-占位文本设置、清空按钮.py
  • QLineEdit-添加自定义行为-明密文切换.py
  • QLineEdit-自动补全.py
  • QLineEdit-长度和只读限制.py
  • QLineEdit-验证器的使用.py
  • QLineEdit-验证器-掩码.py
  • QLineEdit-文本修改状态.py
  • QLineEdit-光标位置控制.py
  • QLineEdit-文本边距设定.py
  • QLineEdit-对齐方式.py
  • QLineEdit-编辑功能.py
  • QLineEdit-编辑功能-选中.py
  • QLineEdit-信号.py
  • QFrame-框架控件的基类.md
  • QFrame-创建.py
  • QFrame-功能作用.py
  • QAbstractScrollArea-滚动区域的低级抽象.md
  • QAbstractScrollArea.py
  • QTextEdit-文本编辑器.md
  • QTextEdit-创建.py
  • QTextEdit-占位文本的设置.py
  • QTextEdit-文本内容的设置.py
  • QTextEdit-文本光标-插入文字、图片、句子.py
  • QTextEdit-文本光标-插入列表.py
  • QTextEdit-文本光标-插入表格.py
  • QTextEdit-文本光标-插入文本块.py
  • QTextEdit-文本光标-插入文本框架.py
  • QTextEdit-文本光标-格式操作.py
  • QPlainTextEdit-纯文本编辑器.md
  • QPlainTextEdit-创建、占位提示文本、只读、字符格式.py
  • QPlainTextEdit-软换行、覆盖模式、tab控制.py
  • QPlainTextEdit-文本操作、块操作.py
  • QPlainTextEdit-放大缩小、滚动内容以显示光标.py
  • QPlainTextEdit-光标操作.py
  • QPlainTextEdit-信号.py
  • QPlainTextEdit-案例-显示行号.py
  • 15 QKeySequenceEdit

  • QKeySequenceEdit-快捷键编辑器.md
  • QKeySequenceEdit-创建、功能、信号.py
  • QKeySequence-补充.py
  • QAbstractSpinBox-数字设定框的抽象基类.md
  • QAbstractSpinBox-创建、模拟子类化、获取与设置控件内容.py
  • QAbstractSpinBox-长按累加加速、只读.py
  • QAbstractSpinBox-对齐方式、周边框架、清空文本内容、按钮标识.py
  • QAbstractSpinBox-内容验证、信号.py
  • QSpinBox-数字设定框.md
  • QSpinBox-创建、最大值最小值范围、数值循环.py
  • QSpinBox-步长设置、前后缀和特殊文本、进制设置.py
  • QSpinBox-值的设置和获取、自定义展示格式.py
  • QSpinBox-信号.py
  • QDoubleSpinBox-浮点数设定框.md
  • QDoubleSpinBox-创建、数值范围、数值循环、设置步长、前后缀.py
  • QDoubleSpinBox-最小值特殊文本、小数位数、设置与获取数值、自定义展示格式.py
  • QDoubleSpinBox-信号.py
  • QDateTimeEdit-日期时间编辑器.md
  • QDateTime、QDate、QTime.py
  • QDateTimeEdit-创建、显示格式、section操作.py
  • QDateEdit-日期编辑器.md
  • QTimeEdit-时间编辑器.md
  • QComboBox-组合下拉框.md
  • QComboBox-创建、数据操作.py
  • QComboBox-模型操作、视图操作.py
  • QComboBox-数据获取.py
  • QComboBox-数据限制.py
  • QComboBox-功能.py
  • QComboBox-信号.py
  • QComboBox-案例.py
  • QFontComboBox-字体下拉框.md
  • QFontComboBox-功能作用.py
  • QAbstractSlider-滑块控件抽象基类.md
  • QAbstractSlider-创建、数值范围、当前数值、步长.py
  • QAbstractSlider-是否追踪、滑块位置、倒立外观、操作反转、滑块方向.py
  • QAbstractSlider-是否按下、信号.py
  • 25 QSlider

  • QSlider-滑块控件.md
  • QSlider-刻度控制.py
  • QSlider-拓展案例.py
  • QSlider-鼠标跳转优化.py
  • QScrollBar-滚动条.md
  • QScrollBar-功能作用.py
  • QDial-转盘控件.md
  • QDial-功能作用.py
  • QRubberBand-选择框线.md
  • QRubberBand-创建.py
  • QRubberBand-综合案例.py
  • QDialog-对话框窗口基类.md
  • QDialog-模态与非模态、创建.py
  • QDialog-是否显示尺寸调整控件、常用操作槽、设置和获取数值.py
  • QDialog-信号.py
  • QFontDialog-字体选择对话框.md
  • QFontDialog-创建.py
  • QFontDialog-弹出方式、选项控制.py
  • QFontDialog-静态方法.py
  • QColorDialog-颜色选择对话框.md
  • QColorDialog-创建.py
  • QColorDialog-功能作用.py
  • QColorDialog-静态方法.py
  • QColorDialog-信号.py
  • QFileDialog-文件选择对话框.md
  • QFileDialog-静态方法-弹出文件操作对话框.py
  • QFileDialog-静态方法-弹出文件夹操作对话框.py
  • QFileDialog-构造函数、接收模式、默认后缀名、文件模式.py
  • QFileDialog-名称过滤器、显示信息详细程度、设置指定角色的标签名称.py
  • QFileDialog-信号.py
  • QInputDialog-输入对话框.md
  • QInputDialog-静态方法.py
  • QInputDialog-创建、功能作用.py
  • QInputDialog-信号.py
  • 34 QCalendarWidget

  • QCalendarWidget-日历控件.md
  • QLabel-标签控件.md
  • QLabel-创建、对齐、间距、缩进.py
  • QLabel-文本格式、伙伴.py
  • QLabel-内容缩放(图片).py
  • QLabel-文本交互标识和选中.py
  • QLabel-外部链接、换行.py
  • QLabel-内容操作.py
  • QLabel-信号.py
  • QLCDNumber-液晶数字显示器.md
  • QProgressBar-进度条控件.md
  • QProgressBar-基本、区间范围和当前数值.py
  • QProgressBar-文本格式设置.py
  • QProgressBar-文本标签操作、方向、反转.py
  • QProgressBar-信号.py
  • QErrorMessage-错误消息对话框.md
  • QErrorMessage-创建、功能作用.py
  • QErrorMessage-Debug.py
  • QProgressDialog-进度条对话框.md
  • QProgressDialog-创建.py
  • QProgressDialog-最小等待时间、窗口标题、设置子控件.py
  • QMessageBox-消息提示框.md
  • QMessageBox-创建.py
  • QMessageBox-按钮操作.py
  • Layout-布局管理器.md
  • Layout-简单使用.py
  • QBoxLayout-创建、方向、插入、删除.py
  • QBoxLayout-空白、伸缩因子.py
  • QVBoxLayout、QHBoxLayout.py
  • QFormLayout-创建、行操作(1).py
  • QFormLayout-行操作(2).py
  • QFormLayout-行包装策略、对齐、间距、字段增长策略.py
  • QGridLayout-创建、元素操作.py
  • QGridLayout-最小列宽行高、拉伸系数、间距控制.py
  • QGridLayout-原点角、信息获取.py
  • QStackedLayout-创建、添加插入获取控件.py
  • QStackedLayout-切换、展示模式、移除控件.py
  • 42 QSS

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

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

    Language files blank comment