Если вы хотите сохранять текущий скрипт 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 () функции в консоли питона.
Благодарим Германа Каррильо за его ответ в этом посте, на котором был основан ответ выше.
Редактировать:
Один из способов автоматического сохранения всех сценариев - это немного изменить ваш файл 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 и сохраните проект, все открытые скрипты в редакторе консоли должны быть сохранены.
(Примечание: я совершенно уверен, что вы можете перебирать открытые скрипты в редакторе консоли, но еще не нашли его. Это был бы намного лучший и менее навязчивый метод, поскольку он избегал бы изменения исходного кода.)