태그 보관물: pyqgis

pyqgis

파이썬 스크립트를 실행 한 후 QGIS를 종료하는 방법은 무엇입니까? 하지 않습니다 –code. 바로 나가는 올바른

파이썬 스크립트를 통해 실행 한 qgis --code myscript.py다음 즉시 종료하고 싶습니다 . iface.actionExit().trigger()파이썬 콘솔에서 QGIS를 실행할 때 QGIS를 죽이지 만 전달하는 스크립트에 넣을 때 QGIS를 사용 하지 않습니다 --code.

바로 나가는 올바른 방법은 무엇입니까? QGIS 2.0.1을 실행하고 있습니다

업데이트 : 나는 또한 시도했다 sys.exit(). QGIS가이를 잡고 다음과 같은 창을 띄웁니다.

An error occured during execution of following code:
  execfile('myscript.py')

  Traceback (most recent call last):
    File "", line 1, in
    File "myscript.py", line 14, in
      sys.exit()
  SystemExit

업데이트 : os.kill(os.getpid(), 9)작동하지만 더러운 해킹이며 더 나은 것을 찾고 있습니다.



답변

스크립트를 사용해보십시오 :

from qgis.utils import iface

#your code here

iface.actionExit().trigger()

그것은 나를 위해 작동합니다.

편집 참고 사항 :

Conley Owens의 의견을 바탕으로 “유용한 것”( iface 를 가져 오는 줄 이 주석 처리 된)을 하기 위해 스크립트를 약간 변경했습니다 .

#from qgis.utils import iface
import os

os.system('clear')
print "Hello"

iface.actionExit().trigger()

스크립트 폴더 내 bash 콘솔에서 qgis –code myscript.py 를 실행 하면 즉시이 오류 메시지가 나타납니다.

qgis.utils에서 iface 행이 필요 하다는 것을 나타냅니다 .

첫 번째 줄에 주석을 달지 않으면 스크립트 실행에 오류가 없었습니다.

그러나 컨트롤은 Python 콘솔에 없었습니다. 그것은 bash 콘솔에 있습니다 (여기서 “Hello”프린트를 관찰하십시오). 이러한 이유로 콘솔을 닫고 QGIS를 자동으로 닫기 때문에 os.kill (os.getpid (), 9) 명령이 작동합니다.

이 문제에 대한 해결책은 QGIS 외부의 PyQGIS API가 필요한 경우 PYTHONPATH를 QGIS ( / usr / share / qgis / python )에 .bashrc 에 포함시키고 bash 콘솔에서 python myscript 로 스크립트를 실행하는 것 입니다. py . 효과가있다.

Windows에서는 다음을 사용하여 QGIS의 Python 콘솔에서 PYTHONPATH를 얻을 수 있습니다.

import os
os.getcwd()

Windows 제어판을 사용하여 변경하십시오.