如果您想在每次保存项目时都将当前的python脚本保存在Python编辑器中,请在控制台中输入以下内容:
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
这实际上将projectSaved()信号连接到python控制台中的saveScriptFile()函数。
感谢赫尔曼·卡里略,他在回答这个帖子中,上面的回答是基于。
编辑:
自动保存所有脚本的一种方法是稍微修改您的处理console.py文件,该文件可以在QGIS目录中找到。例如:
C:/Program Files/QGIS 2.18/apps/qgis/python/console/console.py
找到def saveScriptFile(self):
函数并替换第一行:
tabWidget = self.tabEditorWidget.currentWidget()
与以下内容并缩进后的所有内容:
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
这样看起来像:
def saveScriptFile(self):
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
try:
tabWidget.save()
except (IOError, OSError) as error:
msgText = QCoreApplication.translate('PythonConsole',
'The file <b>{0}</b> could not be saved. Error: {1}').format(tabWidget.path,
error.strerror)
self.callWidgetMessageBarEditor(msgText, 2, False)
保存文件。
现在我们需要在您的目录中创建一个startup.py文件/.qgis2/python/
,该文件在QGIS启动时加载,因此它将运行保存在其中的所有代码。包括以下代码:
from qgis.core import QgsProject
from qgis.utils import iface
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
保存文件。
现在,希望在加载QGIS并保存项目时,应该保存控制台编辑器中所有打开的脚本。
(注意:我非常确定您可以遍历控制台编辑器中打开的脚本,但尚未找到它。这将是一种更好且更不麻烦的方法,因为它避免了更改源代码。)