카테고리 없음

[Python] PySide 기본 동작 방식, QMainWindow 설정

끄적끄적아무거나 2022. 11. 24. 09:00
반응형

 

목차

     

     

     

     

     

    파이썬 PySide6 기본 동작 방식

     

    PySide는 데스크탑용 Application GUI를 파이썬으로 만들어 주는 라이브러리입니다. 이번 포스트에서는 간단한 윈도우창(Windows)을 만들어 보고 PySide가 동작하는 방법에 대해 알아보겠습니다. PySide는 현재 6버전까지 나온 상태로 최신 버전을 사용해서 설계해 보겠습니다.

     

    코드 실행 이전에 아래와 같이 PySide6를 설치 해줍니다.

     

    pip install pyside6

     

     

    이제 아래 기본 코드를 실행하고 코드의 동작 방법에 대해 알아보겠습니다.

     

    PySide 기본 코드>>

    from PySide6.QtWidgets import QApplication, QWidget
    import sys
    
    app = QApplication(sys.argv)
    
    window = QWidget()
    window.show()
    
    app.exec_()

     

    결과>>

     

     

    코드 주석>>

    위 결과는 Window OS 환경에서 동작시킨 결과입니다. mac이나 Linux에서는 각 창의 형식에 맞춰 나옵니다.

     

     

    app = QApplication(sys.argv)

    QApplication의 객체를 선언해줍니다. 그리고 입력 값으로 sys.argv를 넘겨 줍니다. sys.argv는 QApplication에서 사용할 system CMD line명령어를 가져옵니다.

     

     

    window = QWidget()
    window.show()

    다음으로 QWidget을 사용해서 app 객체에 넣을 윈도우창에 대한 설정을 합니다. show를 통해서 화면에 띄워야 출력됩니다. 그리고 이후에 Qt에서 사용하는 모든 함수들은 window를 부모로 가지고 그 안에서 설계하게 됩니다. 

     

     

    app.exec_()

    GUI를 실행시키고 GUI가 event loop로 동작하게 됩니다. 즉, 외부의 event에 반응해서 GUI가 동작할 수 있게 됩니다.

     

     

     

     

     

     

     

    파이썬 PySide6 QMainWindow 클래스

    Qt의 QMainWindow를 사용해서 윈도우창의 툴바나 메뉴나 버튼 같은 인터페이스(Interface)를 꾸며 줍니다. 앞서 코드와 같이 작성을 하면 코드가 지져분해지기 때문에 일반적으로 Class에서 QMainWindow를 상속받아서 사용 합니다. 그리고 해당 클래스의 __init__(self): 에서 레이아웃 및 일반적은 설정을 처리 해줍니다.

     

    아래 예제를 통해 쉽게 알아보겠습니다.

     

    예제코드>>

    from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton
    from PySide6.QtCore import QSize
    import sys
    
    class Qt_Ex(QMainWindow):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("Qt Example")
            self.setFixedSize(QSize(250, 100))
            button = QPushButton("버튼")
            self.setCentralWidget(button)
    
    
    app = QApplication(sys.argv)
    
    window = Qt_Ex()
    window.show()
    
    app.exec_()

     

     

    결과>>

     

     

    주석>>

    class Qt_Ex(QMainWindow):

    Qt_EX라는 클래스를 생성하고 QMainWindow를 상속해옵니다.

     

     

    super().__init__()

    QMainWindow 클래스의 init 값을 가져옵니다.

     

     

    self.setWindowTitle("Qt Example")
    self.setFixedSize(QSize(250, 100))
    button = QPushButton("버튼")
    self.setCentralWidget(button)

    윈도우창의 상단에 텍스트를 지정하고 윈도우 사이즈와 윈도우 안에는 버튼(Button)을 넣어 줍니다.

     

     

    반응형