지난 포스팅
2022.11.21 - [기타/PyQt5 한꼬집씩만 따라해보기] - 4. QMainWindow에 위젯을 넣어봅시다.
이번 포스팅에서는 : 메인윈도우 사이즈 정하기
지금까지 생성한 메인윈도우는 제목과 센트럴위젯은 우리 마음대로 정했지만,
이런 사이즈는 우리가 원한 게 아닙니다. 요구한 적도 없었고요.
그래서 이번 포스팅에서는 메인윈도우한테 내가 원하는 사이즈를 요구;;하는 방법 중 하나를 알려드리겠습니다.
바로 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. 시그널-슬롯 맛보기
'GUI 튜토리얼 > PyQt5 한꼬집씩만 따라해보기' 카테고리의 다른 글
6. 시그널-슬롯 맛보기 (1) | 2022.11.21 |
---|---|
4. QMainWindow에 위젯을 넣어봅시다. (0) | 2022.11.21 |
3. 어떤 위젯도 최상위 윈도우가 될 수 있다? (0) | 2022.11.21 |
댓글