ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PyQt5] 3. Class
    Python/PyQt5 2021. 5. 18. 22:30
    반응형

    이런 코드를 쓸 수도 있지만
    조금만 프로젝트가 복잡해져도 힘들어지기 때문에
    대부분 클래스를 이용해서 GUI를 만듭니다.

    from PyQt5.QtWidgets import QApplication, QMainWindow
    
    app = QApplication([])
    my_window = QMainWindow()
    my_window.setWindowTitle('My App')
    my_window.setGeometry(100, 100, 300, 300)
    my_window.show()
    app.exec_()

    https://github.com/pycrawling/pyqt5_study/blob/main/pyqt5_study_03-1.py

     

    클래스를 만들고 최상위 위젯 QWidget, QDialog, QMainWindow 등을 상속합시다. 
    상속할 때 부모 클래스의 초기화 루틴을 실행해 주는 것을 잊으면 안 됩니다. 

    from PyQt5.QtWidgets import QApplication, QMainWindow
    
    
    class MyWindow(QMainWindow):  # QMainWindow 를 상속합니다.
        def __init__(self):
            super().__init__()  # 부모 클래스의 초기화 메서드를 가져와 실행합니다.
            self.setWindowTitle('My App')
            self.setGeometry(100, 100, 300, 300)
    
    
    app = QApplication([])
    my_window = MyWindow()
    my_window.show()
    app.exec_()
    

    https://github.com/pycrawling/pyqt5_study/blob/main/pyqt5_study_03-2.py

     

    여기에 버튼을 추가합시다. 

    from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
    
    app = QApplication([])
    
    my_window = QMainWindow()
    my_window.setWindowTitle('My App')
    my_window.setGeometry(100, 100, 300, 300)
    
    # QPushButton 의 첫번째 인수는 버튼의 Title 입니다.
    # 두번째 인수는 상위 위젯을 의미합니다. 
    # 버튼은 my_window 의 내부에 있게됩니다.
    button1 = QPushButton('Click me', my_window)
    button1.move(10, 10)
    
    my_window.show()
    app.exec_()
    

    https://github.com/pycrawling/pyqt5_study/blob/main/pyqt5_study_03-3.py

     

    클래스로 정리해 봅니다. 

    from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
    
    
    class MyWindow(QMainWindow):
        def __init__(self):
            super(MyWindow, self).__init__()
            self.setWindowTitle('My App')
            self.setGeometry(100, 100, 300, 300)
    
            button1 = QPushButton('Click me', self)
            button1.move(10, 10)
    
    
    app = QApplication([])
    my_window = MyWindow()
    my_window.show()
    app.exec_()
    

    https://github.com/pycrawling/pyqt5_study/blob/main/pyqt5_study_03-4.py

    클래스를 사용하는 것이 더 깔끔하고 직관적인 것 같습니다. 
    꼬리표(두 번째 인수) self가 아직 있습니다. 
    차후에 layout을 이용하면 self까지 생략할 수 있습니다. 

    self는 객체(인스턴스)가 되었을 때 객체 자신을 의미합니다. 

    여러 번 객체가 될 수도 있지만
    여기서는 my_window = MyWindow()로 한 번 객체가 되었네요. 

    MyWindow 클래스에서 my_window 객체가 생성되었고
    이때 self는 my_window가 됩니다. 

    클래스는 아주 중요한 개념이기 때문에
    혹시 잘 모르신다면 다른 글들을 참고하십시오. 

    반응형
Designed by Tistory.