본문 바로가기
GUI 튜토리얼/PyQt5 한꼬집씩만 따라해보기

1. PyQt5 GUI의 기본 틀부터 시작합시다.

by 일코 2022. 11. 21.

지난 포스팅

2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 들어가며

 

들어가며

PyQt5에 대해 다루는 포스팅이나 강의, 또는 서적이가 국내외에 참 많습니다. 그럼에도 이렇게 저만의 PyQt5 튜토리얼 시리즈를 만드는 이유는 딱 하나입니다. 객체지향 문법이 생소하거나, 파이썬

martinii.fun

 

이번 포스팅에서는 : PyQt5 GUI의 기본 틀

이번 시간부터 약 50개 튜토리얼 형식의 짧은 포스팅들을 통해

PyQt5를 어느 정도 자유롭게 다룰 수 있고, 여러분이 원하는 GUI를 제작할 수 있도록 도움을 드리고 싶습니다.

인트로에서도 언급드린 바 있지만

이 튜토리얼에서는 객체지향 코드를 최소화하고,

최대한 단순한 절차지향 방식으로 튜토리얼을 진행할 예정입니다.

그렇게 위젯이나 레이아웃 등 PyQt5의 기본요소와 구조에 대해 집중적으로 파악하는 것을 우선으로 합니다.

 

이번 포스팅에서는 우리 튜토리얼 시리즈의 기본 틀에 대해 소개합니다.

먼저 아래 코드를 천천히 한 번 여러분의 에디터나 IDE에 직접 타이핑해 보시기 바랍니다.

from PyQt5.QtWidgets import QApplication, QMainWindow  # 필수위젯 임포트 (필수)

app = QApplication([])  # 이벤트핸들러 생성. 괄호 안에 대괄호 == 빈 리스트 (필수)
win = QMainWindow()  # 메인윈도우 생성 (필수)

# (거의 모든 경우) 여기에 위젯을 추가하게 됨

win.show()  # 메인윈도우 보이기 (필수)
app.exec()  # 이벤트핸들러 실행 (필수)

 

 

PyQt와 자주 비교되는 tkinter의 경우에는

메인윈도우를 tkinter.Tk()로 생성하고, 메인윈도우.mainloop() 으로 이벤트핸들러를 시작합니다.

그런데 PyQt5(이하 Qt)에서는 이 두 가지가 분리되어 있습니다.

QApplication이 이벤트핸들러, QMainWindow가 (대부분) 메인윈도우가 됩니다.

이 부분을 유념하시기 바랍니다.

그리고 주석을 보면 다섯 개 라인 전부 Qt GUI 실행에 필수인 코드들입니다.

이 뼈대, 다섯 줄의 코드는 꼭 암기해 주시기 바랍니다.

우리가 진행하는 50여개의 튜토리얼 대부분 이 뼈대 위에서 시작할 예정이니까요.

그리고, 저는 이 튜토리얼을 파이참으로 진행할 예정입니다.
여러분도 파이참을 이용하고 계시면 좋겠습니다. (필수는 아닙니다.)
튜토리얼을 진행하면서 파이참의 편리한 기능을 활용하는 팁을 종종 알려드리고 싶거든요.

 

그럼 위 코드를 실행해볼까요?

빈 창이 생성되었습니다.

 

화면 중앙 근처에 빈 창이 하나 생성되었습니다.

비록 지금은 텅 빈 창이라서 별 것 아닌 것처럼 보이지만,

QMainWindow를 절대 무시하면 안 됩니다.

무려 백 개 가까이 되는 메서드가 내장되어 있는 강력한 위젯이기 때문입니다.

몇 줄의 코드만 추가하면 메뉴바, 탭, 상태표시줄, 툴바 등의 요소를 추가할 수 있고,

다양한 이벤트를 활용해서 쿨한 GUI를 만들 수 있답니다.

 

(파이참에서) 코드 중 QMainWindow에 대고 Ctrl-B를 눌러보면

QMainWindow를 정의하는 코드로 찾아갈 수 있습니다.

어마어마하게 많은 메서드(클래스의 함수)가 미리 준비되어 있습니다.

물론 이들을 전부 다루지는 않겠습니다. 지쳐요ㅜ

대신 가장 중요하다고 생각되는 몇 가지만 가볍게 다뤄볼 예정입니다.

그럼 다음 포스팅에서 만나요!

 


다음 포스팅

2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 2. QMainWindow의 엄마, QWidget

 

2. QMainWindow의 엄마, QWidget

지난 포스팅 2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 1. PyQt5 GUI의 기본 틀부터 시작합시다. 1. PyQt5 GUI의 기본 틀부터 시작합시다. 지난 포스팅 2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기]

martinii.fun

 

댓글