本人是照着pyqgis开发手册来学习开发的。
踩雷1:project项目初始化时,会出现打印布局layout无法创建的情况。
官方手册里的加载项目示例:
# 如果你不在QGIS控制台内运行,首先需要导入qgis和PyQt类,如下所示:
from qgis.core import QgsProject
# 获取项目实例
project = QgsProject.instance()
# 加载另一个项目
project.read('testdata/01_project.qgs')
这里可以正常加载project。
但如我我想创建一个layout布局时,官方示例是:
project = QgsProject.instance()
layout = QgsPrintLayout(project)
layout.initializeDefaults()
但如果仅仅是使用project = QgsProject.instance()
来获取项目实例的话,py运行layout = QgsPrintLayout(project)
会出错并提示Process finished with exit code -1073741819 (0xC0000005)
由该问题也会延申出新的问题:如果使用qgis客户端手动创建布局保存后,再使用py去project.read('testdata/project.qgs')
也会出现错误。。
那如何解决这个问题呢?
答案是:
# 初始化项目
qgs = QgsApplication([], False)
qgs.initQgis()
project = QgsProject()
使用以上三行代码初始化后,再运行layout = QgsPrintLayout(project)
就没问题了。
原因: