Projenizi her kaydettiğinizde geçerli python komut dosyasını Python Düzenleyicisi'ne kaydetmek istiyorsanız, konsola aşağıdakileri yazın:
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
Bu aslında projectSaved () sinyalini python konsolundaki saveScriptFile () işlevine bağlar .
Yukarıdaki cevabın dayandığı bu yazıdaki cevabı için Germán Carrillo'a teşekkür ederiz .
Düzenle:
Tüm komut dosyalarını otomatik olarak kaydetmenin bir yolu , QGIS dizininizde bulunan işleme konsolu.py dosyanızı biraz değiştirmektir . Örneğin:
C:/Program Files/QGIS 2.18/apps/qgis/python/console/console.py
def saveScriptFile(self):
İşlevi bulun ve ilk satırı değiştirin:
tabWidget = self.tabEditorWidget.currentWidget()
aşağıdaki ile ve sonra her şeyi girinti:
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
Böylece şöyle görünür:
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)
Dosya 'yı kaydet.
Şimdi dizininizde bir startup.py dosyası oluşturmamız gerekiyor /.qgis2/python/
, bu dosya QGIS başlatıldığında yüklenir, böylece içine kaydedilmiş herhangi bir kodu çalıştırır. Aşağıdaki kodu ekleyin:
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)
Dosya 'yı kaydet.
Şimdi, umarım, QGIS yükleyip bir projeyi kaydettiğinizde, konsol düzenleyicide açılan tüm komut dosyaları kaydedilmelidir.
(Not: Konsol düzenleyicide açılan komut dosyalarını yineleyebileceğinizden eminim ama henüz bulamadım. Bu, kaynak kodunu değiştirmekten kaçındığı için çok daha iyi ve daha az müdahaleci bir yöntem olacaktır.)