Se você deseja salvar o script python atual no Editor Python cada vez que salvar seu projeto, digite o seguinte no console:
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
Isto essencialmente liga o projectSaved () do sinal para o saveScriptFile () função na consola do pitão.
Agradecemos a Germán Carrillo por sua resposta neste post em que a resposta acima foi baseada.
Editar:
Um método de salvar automaticamente todos os scripts é modificar levemente o arquivo console.py de processamento, que pode ser encontrado no diretório QGIS. Por exemplo:
C:/Program Files/QGIS 2.18/apps/qgis/python/console/console.py
Encontre a def saveScriptFile(self):
função e substitua a primeira linha:
tabWidget = self.tabEditorWidget.currentWidget()
com o seguinte e recuar tudo depois:
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
Para que se pareça com:
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)
Salve o arquivo.
Agora, precisamos criar um arquivo startup.py no seu /.qgis2/python/
diretório, esse arquivo é carregado quando o QGIS é inicializado, para executar qualquer código salvo dentro dele. Inclua o seguinte 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)
Salve o arquivo.
Agora, esperançosamente, quando você carrega o QGIS e salva um projeto, todos os scripts abertos no editor do console devem ser salvos.
(Nota: tenho certeza de que você pode percorrer os scripts abertos no editor do console, mas ainda não o encontrou. Esse seria um método muito melhor e menos invasivo, pois evita alterar o código-fonte.)