반응형

QApplication의 인스턴스를 생성할 때 sys.argv를 전달해야 하는 이유를 다루고 있습니다.




2022. 9. 12  최초작성




모든 응용 프로그램이 작동하려면 QApplication 객체가 필요합니다. 이 객체는 GUI와 사용자 간 상호 작용을 제어하는 응용 프로그램의 기본 이벤트 루프를 시작하고 유지합니다.




PyQt로 응용 프로그램을 개발할 때 다음처럼 QApplication 인스턴스를 생성하고 sys.argv를 전달했습니다. 



import sys
from PyQt5.QtWidgets import QApplication

app = QApplication(sys.argv)

print(sys.argv)



다음처럼 실행하면 sys.argv의 내용을 출력해줍니다.  sys.argv에는 커맨드라인에서 파이썬 프로그램을 실행시 추가한 커맨드라인 아규먼트들이 리스트 형태로 저장되어 있습니다. 커맨드 라인의 아규먼트를 공백을 기준으로 나누어 리스트에 저장합니다.  리스트의 첫번째 항목은 파이썬 파일의 이름입니다. 

 

$ python3 test.py -f filename
['test.py', '-f', 'filename']




sys.argv를 QApplication에 전달하는 이유는 다음과 같은 Qt와 관련있는 커맨드 아규먼트를 Qt에 전달하여 QT의 구성을 바꾸기 위해서 입니다.  

 

--platform platformName[:options]   QPA(Qt Platform Abstraction) 플러그인을 지정합니다. 이것은 QT_QPA_PLATFORM 환경 변수를 재정의합니다.

 

XWindows를 사용하지 않고 Qt 출력을 Linux 프레임 버퍼 장치로 리디렉션하기 위해 Raspberry Pi에서 응용 프로그램을 개발할 때 일반적으로 사용됩니다. 예: -platform linuxfb:fb=/dev/fb1



--platformpluginpath path    플랫폼 플러그인의 경로를 지정합니다. 이것은 QT_QPA_PLATFORM_PLUGIN_PATH 환경 변수를 재정의합니다.

 

--platformtheme theme   플랫폼 테마를 지정합니다. 이것은 QT_QPA_PLATFORMTHEME 환경 변수를 재정의합니다.

 

--plugin plugin   로드할 추가 플러그인을 지정합니다. 플러그인 값은 여러 번 전달될 수 있습니다. 이것은 QT_QPA_GENERIC_PLUGINS 환경 변수의 플러그인과 연결됩니다.

 

--qmljsdebugger value   지정된 포트를 값으로 전달하여 QML/JavaScript 디버거를 활성화합니다. 값은 port:1234[,block] 형식이어야 합니다. 여기서 block은 선택 사항이며 디버거가 연결될 때까지 응용 프로그램을 기다리게 합니다.

 

--qwindowgeometry geometry   X11 구문을 사용하여 기본 창의 지오메트리를 지정합니다. 예: --qwindowgeometry 100x100+50+50

 

--qwindowicon icon   윈도우의 기본 아이콘을 설정합니다.

 

--qwindowtitle title   첫 번째 윈도우의 제목을 설정합니다.

 

--reverse   응용 프로그램의 레이아웃 방향을 Qt.RightToLeft로 설정합니다. 이 옵션은 디버깅을 돕기 위한 것이며 프로덕션 환경에서는 사용하면 안 됩니다. 기본값은 시스템의 로케일에서 자동으로 감지됩니다.

 

--session session   이전 세션에서 응용 프로그램을 복원합니다.




원문

 

https://www.pythonguis.com/faq/qapplication-sysargv-command-line-arguments/ 

 

반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts