用代码学 PyQt5 !
- 每个.py文件都可运行,展示了各种控件的各种功能属性作用,代码中有注释讲解
- 在自己的机器上实际运行一下,仔细观察一下每个属性值的改变会怎样影响控件的外观行为,可能比静态的文档教程更有效。
- 目前还在更新完善中,也期待小伙伴加入,共同完善这个仓库(提交PR或者 联系我 )
- 同步上传至Gitee仓库 GitHub仓库
- Star本仓库
- 克隆本仓库到本地,或下载zip并解压
- 在命令行执行
pip install -r requirements.txt
安装依赖(其实只有一个PyQt-5.15) - 进入你感兴趣的控件对应的文件夹,运行任何一个.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 中查看更多信息
我搜集到的一些PyQt5相关文档、教程、Demo、QSS美化等
01 PyQt基本结构
02 QObject
03 QWidget
05 QPushButton
06 QToolButton
07 QRadioButton
08 QButtonGroup
09 QCheckBox
10 QLineEdit
11 QFrame
13 QTextEdit
17 QSpinBox
20 QDateEdit
21 QTimeEdit
22 QComboBox
25 QSlider
26 QScrollBar
27 QDial
28 QRubberBand
29 QDialog
30 QFontDialog
31 QColorDialog
32 QFileDialog
33 QInputDialog
35 QLabel
36 QLCDNumber
37 QProgressBar
40 QMessageBox
41 Layout
42 QSS
43 pyqtSignal
44 QMainWindow
45 QDockWidget
47 QListView
48 QTableView
49 QTreeView
50 QTabWidget
52 QListWidget
53 QUndoView
54 QHeaderView
共54个目录,249个文件.
Language | files | blank | comment | code |
---|---|---|---|---|
Python | 202 | 2025 | 1506 | 5176 |
Markdown | 51 | 1770 | 0 | 2187 |
SUM | 253 | 3865 | 1506 | 7363 |
代码行数统计工具: github.com/AlDanial/cloc v1.90