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/
'Qt > PyQt5 강좌' 카테고리의 다른 글
logging과 PyQt5를 사용하여 로그창 구현 (0) | 2023.10.22 |
---|---|
PyQT5에서 slot이 thread-safe인지 테스트 해봤습니다 (0) | 2023.10.22 |
PyQt5 예제 - QTreeView으로 json 로드하기 및 저장하기 (0) | 2023.10.22 |
PyQt5 예제 - QListWidget (0) | 2023.10.22 |
PyQt5 예제 - connect에서 slot 함수에 아규먼트 전달하기 (0) | 2023.10.22 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!