프로젝트를 저장할 때마다 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 Carrillo 에게 감사드립니다 .
편집하다:
모든 스크립트 를 자동으로 저장 하는 한 가지 방법은 QGIS 디렉토리에있는 processing console.py 파일 을 약간 수정하는 것 입니다. 예를 들면 다음과 같습니다.
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를로드하고 프로젝트를 저장할 때 콘솔 편집기에서 열린 모든 스크립트를 저장해야합니다.
(참고 : 콘솔 편집기에서 열린 스크립트를 반복 할 수는 있지만 아직 찾지 못했습니다. 소스 코드 변경을 피하기 때문에 훨씬 좋고 덜 관용적 인 방법입니다.)