Якщо ви хочете зберегти поточний сценарій 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 () сигнал на saveScriptFile () функції в консолі пітона.
Кредит Germán Каррільо його відповіді на цей пост , в якому вище відповідь був заснований.
Редагувати:
Один із способів автоматичного збереження всіх сценаріїв - це трохи змінити файл обробки 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 і зберігаєте проект, усі відкриті сценарії в консольному редакторі повинні бути збережені.
(Примітка. Я впевнений, що ви можете переглядати відкриті сценарії в консольному редакторі, але ще не знайшли. Це був би набагато кращий і менш нав'язливий метод, оскільки це дозволяє уникнути зміни вихідного коду.)