Nếu bạn muốn lưu tập lệnh python hiện tại trong Python Editor mỗi khi bạn lưu dự án của mình, hãy nhập đoạn mã sau vào bảng điều khiển:
from PyQt4.QtGui import QDockWidget
def save_project():
consoleWidget = iface.mainWindow().findChild( QDockWidget, 'PythonConsole' )
consoleWidget.console.saveScriptFile()
QgsProject.instance().projectSaved.connect(save_project)
Điều này chủ yếu nối liền projectSaved () tín hiệu đến saveScriptFile () chức năng trong python console.
Tín dụng cho Germán Carrillo cho câu trả lời của mình trong bài đăng này, trong đó câu trả lời trên được dựa trên.
Biên tập:
Một phương pháp tự động lưu tất cả các tập lệnh là sửa đổi một chút tệp xử lý console của bạn có thể tìm thấy trong thư mục QGIS của bạn. Ví dụ:
C:/Program Files/QGIS 2.18/apps/qgis/python/console/console.py
Tìm def saveScriptFile(self):
hàm và thay thế dòng đầu tiên:
tabWidget = self.tabEditorWidget.currentWidget()
với những điều sau đây và thụt lề mọi thứ sau:
for i in range(self.tabEditorWidget.count()):
tabWidget = self.tabEditorWidget.widget(i)
Vì vậy, nó trông giống như:
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)
Lưu các tập tin.
Bây giờ chúng tôi cần tạo một tệp startup.txt trong /.qgis2/python/
thư mục của bạn , tệp này được tải khi QGIS khởi động để nó sẽ chạy bất kỳ mã nào được lưu bên trong. Bao gồm các mã sau đây:
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)
Lưu các tập tin.
Bây giờ, hy vọng, khi bạn tải QGIS và lưu dự án, tất cả các tập lệnh đã mở trong trình chỉnh sửa bảng điều khiển sẽ được lưu.
(Lưu ý: Tôi khá chắc chắn rằng bạn có thể lặp qua các tập lệnh đã mở trong trình chỉnh sửa bảng điều khiển nhưng vẫn chưa tìm thấy. Đây sẽ là một phương pháp tốt hơn và ít xâm phạm hơn vì nó tránh thay đổi mã nguồn.)