Se si desidera salvare lo script python corrente nell'editor Python ogni volta che si salva il progetto, digitare quanto segue nella console:
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
Questo collega essenzialmente projectSaved () segnale al saveScriptFile () funzione nella console pitone.
Ringraziamo Germán Carrillo per la sua risposta in questo post in cui si basava la risposta di cui sopra.
Modificare:
Un metodo per salvare automaticamente tutti gli script è modificare leggermente il file di elaborazione console.py che si trova nella directory di QGIS. Per esempio:
C:/Program Files/QGIS 2.18/apps/qgis/python/console/console.py
Trova la def saveScriptFile(self):
funzione e sostituisci la prima riga:
tabWidget = self.tabEditorWidget.currentWidget()
con il seguente e rientro tutto dopo:
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
In modo che assomigli a:
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)
Salva il file.
Ora abbiamo bisogno di creare un file startup.py nella tua /.qgis2/python/
directory, questo file viene caricato all'avvio di QGIS, quindi eseguirà qualsiasi codice salvato all'interno. Includi il seguente codice:
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)
Salva il file.
Ora, si spera, quando carichi QGIS e salvi un progetto, tutti gli script aperti nell'editor della console dovrebbero essere salvati.
(Nota: sono abbastanza sicuro che puoi scorrere gli script aperti nell'editor della console ma non l'ho ancora trovato. Questo sarebbe un metodo molto migliore e meno invadente in quanto evita di alterare il codice sorgente.)