通过可直接运行的代码示例讲解 PyQt 5 常用基础控件。附学习资源、demo分享。
用代码学 PyQt5 !
新版 「PySide6 代码教程」 初稿已经接近完成!本项目的更新也渐趋结束,新内容的补充完善会集中在新版教程。
新教程有如下升级:
3.10
+ PySide 6.3
,版本新、功能更强大欢迎新老读者前往阅读和提供贡献!
.py
文件)都可运行,展示了各种控件的各种功能属性作用,代码中有注释讲解git clone https://github.com/muziing/PyQt_practice.git
),或下载 zip 归档并解压python -m venv venv
venv\Scripts\activate
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
安装依赖.py
文件观察效果以 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_())
一些 PyQt 相关文档、教程、Demo、QSS 美化等收集整理
如果本项目对你有帮助,希望可以请我喝一杯冰可乐 :beer:。
共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 |