Si vous souhaitez enregistrer le script python actuel dans l' éditeur Python à chaque fois que vous enregistrez votre projet, tapez ce qui suit dans la console:
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
Cela connecte essentiellement le projectSaved () signal au saveScriptFile () fonction de la console python.
Crédit Germán Carrillo pour sa réponse à ce poste où la réponse ci - dessus était basée sur.
Éditer:
Une méthode d'enregistrement automatique de tous les scripts consiste à modifier légèrement votre fichier de traitement console.py qui se trouve dans votre répertoire QGIS. Par exemple:
C:/Program Files/QGIS 2.18/apps/qgis/python/console/console.py
Trouvez la def saveScriptFile(self):
fonction et remplacez la première ligne:
tabWidget = self.tabEditorWidget.currentWidget()
avec ce qui suit et tout mettre en retrait après:
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
Pour qu'il ressemble à ceci:
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)
Enregistrez le fichier.
Maintenant, nous devons créer un fichier startup.py dans votre /.qgis2/python/
répertoire, ce fichier est chargé au démarrage de QGIS afin qu'il exécute tout code enregistré à l'intérieur. Incluez le code suivant:
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)
Enregistrez le fichier.
Maintenant, espérons-le, lorsque vous chargez QGIS et enregistrez un projet, tous les scripts ouverts dans l'éditeur de console doivent être enregistrés.
(Remarque: je suis certain que vous pouvez parcourir les scripts ouverts dans l'éditeur de console, mais ne l'avez pas encore trouvé. Ce serait une méthode bien meilleure et moins intrusive car elle évite de modifier le code source.)