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

5. 메인윈도우의 초기사이즈 정하기

by 일코 2022. 11. 21.

지난 포스팅

2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 4. QMainWindow에 위젯을 넣어봅시다.

 

4. QMainWindow에 위젯을 넣어봅시다.

지난 포스팅 2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 3. 어떤 위젯도 최상위 윈도우가 될 수 있다? 3. 어떤 위젯도 최상위 윈도우가 될 수 있다? 지난 포스팅 2022.11.21 - [기타/PyQt5 한꼬집씩만

martinii.fun


 

이번 포스팅에서는 : 메인윈도우 사이즈 정하기

지금까지 생성한 메인윈도우는 제목과 센트럴위젯은 우리 마음대로 정했지만,

이런 사이즈는 우리가 원한 게 아닙니다. 요구한 적도 없었고요.

그래서 이번 포스팅에서는 메인윈도우한테 내가 원하는 사이즈를 요구;;하는 방법 중 하나를 알려드리겠습니다.

바로 win.setFixedSize(너비, 높이) 입니다.

아래는 전체 코드입니다.

메인윈도우의 너비를 400픽셀로, 높이를 300픽셀로 만들어줍니다.

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton

app = QApplication([])  # 이벤트핸들러 생성
win = QMainWindow()  # 메인윈도우 생성
win.setFixedSize(400, 300)  # 사이즈 지정(width=400, height=300)

button = QPushButton(text="눌러주세요")  # 너무 휑해서 버튼 하나 생성
win.setCentralWidget(button)  # 메인윈도우의 센트럴위젯으로 버튼 지정

win.show()  # 창 보이게
app.exec()  # 이벤트핸들러 실행

 

Shift-Alt-F10으로 실행해볼까요?

의도한 대로 잘 실행되었습니다.

setFixedSize라는 메서드명에서 알 수 있듯이

이 창은 크기조정이 되지 않습니다. W400 x H300 고정입니다.

참고로 400x300은 창 전체의 사이즈가 아니라, 센트럴위젯, 즉 제목줄을 제외한 위젯만의 사이즈입니다.

 

그럼 사이즈 조정은 가능하게 두고, 초기사이즈만 조정할 수 있는 메서드가 따로 있을까요?

예. 있습니다. 바로 win.resize(너비, 높이)를 대신 사용하시면 됩니다.

 

win.resize(400, 300) 코드는 win.resize(QSize(400, 300))과 같이 바꿔 쓸 수 있습니다. 의미는 동일합니다.

QSize 클래스는 필수는 아니지만, scale이나 transpose 등 재미있는 메서드를 여러 개 가지고 있습니다.

예를 들어 transposed 메서드는 너비와 높이 값이 바뀐 QSize를 리턴합니다.

기존 resize 라인 대신 아래 코드를 넣고 실행해보면

win.resize(QSize(400, 300).transposed())

너비와 높이가 바뀌었습니다.

 

 

부록 : 임포트경로가 기억나지 않는 경우

참고로 QSize는 from PyQt5.QtCore import QSize라고 임포트해야 합니다.

어떤 경로에서 임포트해야 하는지 기억이 안 나는 경우,

파이참의 자동완성 기능을 이용하면 편리합니다.

빨간 줄이 그어진 QSize에 커서를 두고 Alt-Enter를 누른 후 자동임포트를 하시면 됩니다.

아래처럼요.

참 편리하죠? Qt처럼 대규모의 프레임워크를 다룰 때는 정말정말 유용하게 쓰입니다.

다 기억하기 어려우니까요ㅜ

다음 포스팅에서는 버튼에 간단한 기능을 넣어보겠습니다.

이름하여 시그널-슬롯의 개념에 대해 알려드리겠습니다.

 


다음 포스팅

2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 6. 시그널-슬롯 맛보기

 

6. 시그널-슬롯 기초

 

martinii.fun

 

댓글