pyQt5 윈도우를 화면의 중앙에 배치하기Qt/PyQt5 강좌2024. 8. 19. 21:58
Table of Contents
반응형
pyQt5 윈도우를 화면의 중앙에 배치하는 예제입니다.
두 개 이상의 모니터 사용시 주모니터의 정중앙에 보여집니다. 사용하는 UI 컴포넌트에 따라 정중앙에 배치안될 수도 있습니다.
2024. 5. 22 최초작성
2024. 8 .19 버그 수정
import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit class MyWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("PyQt5 Hello World Example") # 텍스트 에디트 위젯을 생성합니다. self.text_edit = QTextEdit(self) self.text_edit.setPlainText("Hello World") # "Hello World" 출력 # 텍스트 에디트를 중앙 위젯으로 설정합니다. self.setCentralWidget(self.text_edit) # 윈도우를 화면 정중앙에 배치합니다. self.adjustSize() # 창의 크기를 자동으로 조정하여 내부에 포함된 모든 위젯이 잘 보이도록 합니다. qr = self.frameGeometry() # 창의 프레임(테두리 포함)과 관련된 지오메트리 정보를 반환합니다. qr에는 창의 위치와 크기가 저장됩니다. cp = QApplication.primaryScreen().availableGeometry().center() # 주 화면의 사용 가능한 영역의 중앙 위치 좌표를 가져옵니다. qr.moveCenter(cp) # 창의 프레임 지오메트리의 중심을 지정된 좌표(`cp`)로 이동시킵니다. 이로써 창의 중심이 화면의 중앙에 위치하게 됩니다. qr을 옮겨봄으로써 윈도우가 이동할 위치에 대한 좌표를 미리 파악합니다. self.move(qr.topLeft()) # 창의 왼쪽 상단 코너를 지정된 좌표로 이동시킵니다. `qr.topLeft()`는 `qr` 지오메트리의 왼쪽 상단 코너 좌표를 반환합니다. 이를 통해 창의 중심이 화면의 중앙에 위치하게 됩니다. if __name__ == "__main__": app = QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_()) |
위 방법을 사용해도 중앙 정렬을 실패하는 경우가 있었습니다.
테스트에 사용한 코드입니다.
import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('중앙 정렬 실패 예제') # 중앙 위젯 생성 central_widget = QWidget() central_widget.setFixedWidth(300) self.setCentralWidget(central_widget) # # 윈도우를 화면 정중앙에 배치합니다. # self.adjustSize() # 창의 크기를 자동으로 조정하여 내부에 포함된 모든 위젯이 잘 보이도록 합니다. qr = self.frameGeometry() # 창의 프레임(테두리 포함)과 관련된 지오메트리 정보를 반환합니다. qr에는 창의 위치와 크기가 저장됩니다. cp = QApplication.primaryScreen().availableGeometry().center() # 주 화면의 사용 가능한 영역의 중앙 위치 좌표를 가져옵니다. qr.moveCenter(cp) # 창의 프레임 지오메트리의 중심을 지정된 좌표(`cp`)로 이동시킵니다. 이로써 창의 중심이 화면의 중앙에 위치하게 됩니다. qr을 옮겨봄으로써 윈도우가 이동할 위치에 대한 좌표를 미리 파악합니다. self.move(qr.topLeft()) # 창의 왼쪽 상단 코너를 지정된 좌표로 이동시킵니다. `qr.topLeft()`는 `qr` 지오메트리의 왼쪽 상단 코너 좌표를 반환합니다. 이를 통해 창의 중심이 화면의 중앙에 위치하게 됩니다. self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = MainWindow() sys.exit(app.exec_()) |
타이머를 사용하여 중앙 정렬이 안되는 점을 해결해줍니다.
테스트에 사용한 코드입니다.
import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget from PyQt5.QtCore import QTimer class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('중앙 정렬 실패 예제') # 중앙 위젯 생성 central_widget = QWidget() central_widget.setFixedWidth(300) self.setCentralWidget(central_widget) # 타이머를 사용하여 윈도우가 완전히 생성된 후 중앙 정렬 QTimer.singleShot(0, self.centerWindow) self.show() def centerWindow(self): # # 윈도우를 화면 정중앙에 배치합니다. # self.adjustSize() # 창의 크기를 자동으로 조정하여 내부에 포함된 모든 위젯이 잘 보이도록 합니다. qr = self.frameGeometry() # 창의 프레임(테두리 포함)과 관련된 지오메트리 정보를 반환합니다. qr에는 창의 위치와 크기가 저장됩니다. cp = QApplication.primaryScreen().availableGeometry().center() # 주 화면의 사용 가능한 영역의 중앙 위치 좌표를 가져옵니다. qr.moveCenter(cp) # 창의 프레임 지오메트리의 중심을 지정된 좌표(`cp`)로 이동시킵니다. 이로써 창의 중심이 화면의 중앙에 위치하게 됩니다. qr을 옮겨봄으로써 윈도우가 이동할 위치에 대한 좌표를 미리 파악합니다. self.move(qr.topLeft()) # 창의 왼쪽 상단 코너를 지정된 좌표로 이동시킵니다. `qr.topLeft()`는 `qr` 지오메트리의 왼쪽 상단 코너 좌표를 반환합니다. 이를 통해 창의 중심이 화면의 중앙에 위치하게 됩니다. if __name__ == '__main__': app = QApplication(sys.argv) ex = MainWindow() sys.exit(app.exec_()) |
반응형
'Qt > PyQt5 강좌' 카테고리의 다른 글
탭 재생성 시 이전 선택 탭 복원하는 pyQt5 예제 (2) | 2024.08.23 |
---|---|
pyQt5로 만든 이미지 뷰어 (0) | 2024.08.21 |
pyQt5 QSlider 예제 (0) | 2024.08.19 |
정수를 읽어서 한글로 변환해주는 pyQt5 예제 (0) | 2024.08.18 |
정수 입력시 천 단위로 콤마를 추가해주는 pyQt5 예제 (0) | 2024.08.17 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!