본문으로 바로가기
반응형

PyQt5 는 다양한 방식으로 화면에 띄운 윈도우 창의 위치를 지정할 수 있습니다. 윈도우를 생성하기 위해 상속받은 클래스에 따라 달라질 수 있는데, 대표적인 클래스는 QMainWindow QWidget 입니다. QMainWindow QWidget 을 상속받아 만들기 때문에 윈도우 창 생성과 관련한 함수는 동일하게 사용합니다.

 

1. 기본 윈도우 크기와 위치 설정 함수

 

윈도우에서 창 크기와 위치를 지정할 때 들어가는 변수명들에 대한 설명입니다.

 

QMainWindow setGeometry(x, y, width, height) 는 윈도우 화면에서의 위치를 결정 짓습니다. 기준은 윈도우 바탕화면입니다. 4개의 인수를 입력해야 되는데, 각 요소는 다음과 같습니다. QWidget 의 함수이기 때문에 QMainWindow 에서도 동일하게 사용할 수 있습니다.

 

  • x : 화면에서 x 위치 값
  • y : 화면에서 y 위치 값
  • width : 윈도우 넓이
  • height : 윈도우 높이
def init_ui(self):
    # 윈도우 설정
    self.setGeometry(500, 500, 400, 300)  # x, y, w, h

 

또 다른 방법은 property 변수인 width, height, x, y 를 이용하는 것입니다.

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.width = 100
        self.height = 100
        self.x = 400
        self.y = 500

 

2. 윈도우 사이즈와 위치 재조정 함수

 

함수 파라미터로 넘긴 데이터에서 첫 번째가 화면의 넓이, 두 번째가 높이입니다. setFixedSize()함수는 화면을 윈도우의 중앙에 위치시킵니다.

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 윈도우 설정
        self.setGeometry(0, 0, 500, 300)  # x, y, w, h
        self.setWindowTitle('Status Window')

        self.setFixedSize(600, 400)

 

관련 함수 중에 setFixedWidth() setFixedHeight() 두 가지가 있습니다. 주로 기존 세팅된 윈도우의 높이와 넓이는 유지한 채 값을 변경할 때 사용하는 함수입니다. 아래 소스처럼 setGeometry() 로 세팅하고 setFixedWidth() 를 적용하면 윈도우 넓이가 바뀝니다.

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 윈도우 설정
        self.setGeometry(0, 0, 500, 300)  # x, y, w, h
        self.setWindowTitle('Status Window')

        self.setFixedWidth(900)

 

사이즈를 재조정하는 또 다른 방법은 resize(width, height) 함수를 이용하는 것입니다. 필요한 인수 두 개는 넓이와 높이 입니다. 위치 이동은 move(x, y) 함수를 이용해서 조절할 수 있습니다. 상황에 따라 윈도우 위치를 바꾸고 싶다면 resize() move() 를 이용해 보세요.

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 윈도우 설정
        self.setGeometry(0, 0, 500, 300)  # x, y, w, h
        self.setWindowTitle('Status Window')

        self.resize(700, 500)
        self.move(100, 100)
반응형