หากคุณต้องการบันทึกสคริปต์ python ปัจจุบันในPython Editorทุกครั้งที่คุณบันทึกโครงการของคุณให้พิมพ์ดังต่อไปนี้ในคอนโซล:
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สำหรับคำตอบของเขาในโพสต์นี้ซึ่งคำตอบข้างต้นเป็นไปตาม
แก้ไข:
วิธีหนึ่งในการบันทึกสคริปต์ทั้งหมดโดยอัตโนมัติคือแก้ไขไฟล์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 และบันทึกโครงการสคริปต์ที่เปิดอยู่ทั้งหมดในคอนโซลเอดิเตอร์ควรได้รับการบันทึก
(หมายเหตุ: ฉันค่อนข้างแน่ใจว่าคุณสามารถทำซ้ำผ่านสคริปต์ที่เปิดอยู่ในตัวแก้ไขคอนโซล แต่ยังไม่พบวิธีนี้จะเป็นวิธีที่ดีกว่าและไม่ก้าวก่ายมากเท่าที่จะหลีกเลี่ยงการแก้ไขซอร์สโค้ด)