ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Day 1. PyQt5 사용해보기 - 빈 윈도우 띄우기 그리고 이벤트 루프
    <개인공부> - IT/[Python] 2021. 2. 4. 05:27
    반응형

    나는 회사에 입사 후 현장에 사용될 스위치 컨피그를 만들어주는 GUI Application을 만들어서 배포했다.

    기존에는 txt 파일로 저장된 내용을 Mangement IP와 일부 Vlan 정보만 바꾸어 사용하다보니 Human Error가 많을 수 밖에 없었다. 예를 들면, spanning-tree의 vlan range를 오설정 한다던가 trunking vlan 오설정 등.

     

    그래서 그런 Human Error를 최소화 하고자 PyQt5를 이용해서 간단한 Application을 만들었다. GUI 프로그래밍에 대한 탄탄한 지식이 있었던 건 아니었고 구글링으로 원하는 Application을 만들었고 현재도 동료들의 Feedback을 통해서 지속적으로 업데이트하고 있다. 잘 디자인된 프로그래밍이라고 하기엔 다소 어렵고 돌아만 가는 토이 App이다 보니 PyQt5에 대한 공부를 해보면 어떨까 하는 생각으로 해당 포스트를 시작한다.

     

    내가 참고한 책은 "Create GUI Applications with Python & Qt5: The hands-on guide to making apps with Python"


    from PyQt5.QtWidgets import QApplication, QWidget
    # Only needed for access to command line arguments
    import sys
    # You need one (and only one) QApplication instance per application.
    # Pass in sys.argv to allow command line arguments for your app.
    # If you know you won't use command line arguments QApplication([]) works too.
    app = QApplication(sys.argv)
    # Create a Qt widget, which will be our window.
    window = QWidget()
    window.show() # IMPORTANT!!!!! Windows are hidden by default.
    # Start the event loop.
    app.exec_()
    # Your application won't reach here until you exit and the event
    # loop has stopped.

    참고한 책의 가장 처음 소스코드이다. 빈 윈도우를 띄워주는 소스 코드이다. 

     

    나는 가장 마지막 라인 app.exec()와 app.exec_()의 차이는 무엇인지 궁금해서 검색을 조금 해보았다.

    결론만 먼저 이야기하면 Python3에서는 차이가 없는 동일한 함수이다. 단, Python2.7 에서 exec는 reserved keyword였기에 PyQt를 개발하면서 _ (underscore)를 붙여주었던 것 뿐. 하지만 Python3에서는 exec가 reserved keyword에서 빠지게 됨에 따라 exec()와 exec_()는 동일하게 생각하면 된다. 2)  

     

    다양한 위젯에 대한 사용법을 설명해 주기 전 이 책에서는 간단한 event loop에 대한 개념을 설명한다. Application의 객체는 event loop을 갖게 된다. event란 키보드의 특정 키를 누르거나 혹은 떼거나 마우스를 클릭하는 것과 같은 user의 action을 event라고 한다. 이 각각의 event는 event queue라고 하는 곳에 놓이며 각 event handler에 의해서 처리된다. 

    쉽게 설명하면 내가 만든 application은 결국 event loop을 돌면서 각 event가 처리될 때까지 기다리고 있는 것이라 생각하면 된다. 글 솜씨가 없어서 직관적인 이해를 돕기위한 책의 그림을 캡춰하였다. 

     

    1. Reference book: "Create GUI Applications with Python & Qt5: The hands-on guide to making apps with Python"

    2. Reference site: Reference site: stackoverflow.com/questions/22610720/should-i-use-app-exec-or-app-exec-in-my-pyqt-application

    반응형
Designed by Tistory.