Si desea guardar el script actual de Python en el Editor de Python cada vez que guarde su proyecto, escriba lo siguiente en la consola:
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
Esto conecta esencialmente el projectSaved () señal a la saveScriptFile () función en la consola Python.
Gracias a Germán Carrillo por su respuesta en esta publicación en la que se basó la respuesta anterior.
Editar:
Un método para guardar automáticamente todos los scripts es modificar ligeramente su archivo de consola console.py de procesamiento que se puede encontrar en su directorio QGIS. Por ejemplo:
C:/Program Files/QGIS 2.18/apps/qgis/python/console/console.py
Encuentra la def saveScriptFile(self):
función y reemplaza la primera línea:
tabWidget = self.tabEditorWidget.currentWidget()
con lo siguiente y sangra todo después:
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
Para que se vea así:
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)
Guarda el archivo.
Ahora necesitamos crear un archivo startup.py en su /.qgis2/python/
directorio, este archivo se carga cuando QGIS se inicia para que ejecute cualquier código guardado en su interior. Incluya el siguiente código:
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)
Guarda el archivo.
Ahora, con suerte, cuando carga QGIS y guarda un proyecto, se deben guardar todos los scripts abiertos en el editor de la consola.
(Nota: estoy bastante seguro de que puede iterar a través de los scripts abiertos en el editor de la consola, pero aún no lo ha encontrado. Este sería un método mucho mejor y menos intrusivo ya que evita alterar el código fuente).