반응형

pyQt5 윈도우를 화면의 중앙에 배치하는 예제입니다.

두 개 이상의 모니터 사용시 주모니터의 정중앙에 보여집니다. 사용하는 UI 컴포넌트에 따라 정중앙에 배치안될 수도 있습니다. 



2024. 5. 22  최초작성






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_())




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts