Python 으로 GUI 프로그램을 개발하는건 처음이기 때문에 일단 빈 창을 만드는 것 부터 시작하려 한다.
이 프로젝트는 PyCharm 환경에서 진행된다.
1. PySide
이번 프로젝트에서 사용할 GUI 개발 도구는 PySide6 이다. PySide6는 오픈소스 C++ 개발 프레임워크인 QT의
Python 바인딩 버전이다. 원래 Riverbank Computing 에서 만든 PyQt 란 이름의 바인딩 버전이 별도로 있었지만
PyQt는 GPL 라이선스의 오픈소스이기 때문에 외부 배포시 해당 소프트웨어의 전체 소스코드를 공개해야한다.
그런데 QT를 개발한 QT Company 가 정식으로 Python 바인딩 버전인 PySide 를 지원하기로 했고 이 PySide는
소스코드를 수정하지 않고 라이브러리로만 사용할 경우에 한해서는 소스코드를 공개할 필요가 없는 LGPL 라이선스의
오픈소스이다. PyQt 와 PySide 는 그 기능과 사용법이 거의 99퍼센트 동일하고 이 프로젝트가 상업적인 목적으로
개발하는 것도 아니기 때문에 어느쪽을 사용하더라도 문제는 없지만 어차피 거의 같은 기능이라면 규제가 덜한쪽에
익숙해지는 것이 좋을 것 같아서 PySide 쪽을 선택하게되었다.
2. PySide6 설치
python -m pip install --upgrade pip
pip install PySide6
PyCharm 에서 프로젝트를 생성한 후 터미널에서 위 명령어를 실행하여 pip을 업그레이드하고 PySide6 를 설치한다.
3. 빈 창 띄우기
이제 이번 글의 목적인 빈 창(window)을 띄워보자.
먼저 프로젝트의 main.py 를 위와 같이 수정해준다. 실행할 앱, 즉 QApplication 객체를 생성한 뒤 이를 실행하고
앱이 종료되면 프로그램이 정상종료되도록 하는 코드이다. QApplication 객체를 생성할 때 넣어준 sys.argv 는 현재
실행중인 파이썬 코드(main.py)가 실행되면서 받아온 인자 값들이다. argv[0] 에는 기본적으로 실행된 파이썬 코드의
절대경로가 들어있다. 그런데 위의 코드를 실행하면 아무 창도 나타나지 않는다. 앱을 생성하고 실행했을 뿐 아무
위젯도 붙여주지 않았기 때문이다.
QWidget 이라는 클래스를 추가로 import 해준 다음 QWidget 클래스를 상속한 MyApp 클래스를 만들어준다.
그리고 생성자인 __init__ 메소드를 선언한다. __init__ 메소드에서는 슈퍼클래스 QWidget의 생성자인 super().__init__
메소드를 먼저 호출한 뒤 자신의 메소드인 init_ui 함수를 호출한다. 그리고 init_ui 메소드는 윈도우의 타이틀을
인자로받은 문자열로 지정하고 MyApp 위젯을 화면에 뿌려준다. 이제 QApplication 의 객체를 생성하고 방금 만든
위젯인 MyApp 의 객체를 생성한 뒤 앱을 실행해보자.
윈도우 타이틀로 지정해준 MyFirstApplication 이라는 제목을 가진 빈 창 하나가 나타나는 것을 볼 수 있다.
'개인 프로젝트 > Accounting Program' 카테고리의 다른 글
#5 메인 윈도우(Main Window) (0) | 2021.10.17 |
---|---|
#4 툴팁 (0) | 2021.10.17 |
#3 버튼 (0) | 2021.10.16 |
#2 어플리케이션 아이콘 넣기 (0) | 2021.10.16 |
#0 프로젝트 시작 (0) | 2021.10.16 |