วิธีแสดงคอนโซล Python ที่โปรแกรม QGIS เริ่มต้นขึ้น


10

ฉันสงสัยว่ามีวิธีการเปิดคอนโซล Python โดยตรงที่เปิดตัวโปรแกรมหรือไม่ มีความเป็นไปได้ในการตั้งค่าทางลัดสำหรับคอนโซล Python แต่ฉันไม่พบตัวเลือกดังกล่าวสำหรับการเปิดตัวโปรแกรม QGIS


มีวิธีเขียนไฟล์ที่ถูกเรียกใช้งานเมื่อเริ่มใช้ QGIS ซึ่งมีประโยชน์สำหรับการตั้งค่าแบบกำหนดเองเช่นนี้ คำถามคือว่าคุณสามารถเปิดคอนโซลโปรแกรมอย่างจริงจังหรือไม่ คุณรู้หรือไม่ว่าคุณสามารถทำได้
BritishSteel

ฉันค้นหาใน API แต่คลาสเดียวที่เกี่ยวข้องกับ python คือ QgsPythonRunner ซึ่งไม่ใช่คอนโซล
Martin

คำตอบ:


12

การใช้มาโคร

คุณสามารถเริ่มคอนโซล QGIS Python เมื่อเปิดโครงการโดยการเขียนบรรทัดสองสามบรรทัดในQGIS->Project->Project Properties:

def openProject():
    import qgis     
    qgis.utils.iface.actionShowPythonDialog().trigger()

ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานมาโครในโครงการด้วยวิธีนี้: Settings->Options->General->Enable macros: Always


ใช้ startup.py

ตามที่คุณต้องการให้คอนโซล QGIS Python เปิดเมื่อเรียกใช้งาน QGISคุณสามารถสร้าง (หากยังไม่มีstartup.pyไฟล์) %APPDATA%\QGIS\QGIS3\และเขียนไฟล์:

import qgis     
qgis.utils.iface.actionShowPythonDialog().trigger()

แก้ไข (เพื่อตอบคำถามติดตามโดย @Miro)

ดังที่ Miro ชี้ให้เห็นถ้า QGIS Python Console เปิดqgis.utils.iface.actionShowPythonDialog().trigger()อยู่จะปิดลงดังนั้นหากเราเขียนปลั๊กอิน QGIS มันอาจสมเหตุสมผลถ้าเปิด Python Console (มองเห็นได้) หรือไม่

คุณสามารถทราบได้ว่า Python Console ไม่สามารถมองเห็นได้ (แล้วเปิดมัน) โดยใช้รหัสนี้:

from qgis.PyQt.QtWidgets import QDockWidget
pythonConsole = iface.mainWindow().findChild(QDockWidget, 'PythonConsole')
if not pythonConsole or not pythonConsole.isVisible():
    from qgis.utils import iface
    iface.actionShowPythonDialog().trigger()

มีวิธีตรวจสอบว่าคอนโซลเปิดอยู่หรือไม่? เพราะถ้ามันเป็นทริกเกอร์ () กำลังจะปิดมัน
Miro

@Miro มีวิธี! ฉันได้แก้ไขคำตอบของฉันพร้อมคำแนะนำแล้ว
Germán Carrillo

1
ใน 2.18 แมโครโครงการทำงานได้ แต่สคริปต์เริ่มต้นไม่สามารถเปิดคอนโซลได้
underdark
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.