AAT_Phase 1. GUI Programming using PyQt (2)

'졸업작품 (AAT)' 시리즈AAT_Phase 1. GUI Programming using PyQt (2)

mildsalmon

흔치않고, 진귀하다.

Sign in to view email

공부를 통해 새로 알게된 부분

  • 레이아웃 (GUI 프로그램에서 위젯을 배치하는 것)
    • resize, move, setGeometry 메서드를 이용해 위젯의 출력 위치를 설정(명시적 설정) → 윈도우 크기 변경시 문제가 있음.
  • 레이아웃 매니저
      1. 위젯 만들기 (self.pushButton = QPushButton("")) , 2. 레이아웃 매니저 만들기 (layout = 레이아웃 매니저()), 3. addWidget 메서드를 이용한 위젯 등록 (layout.addWidget(self.pushButton)), 4. 레이아웃 매니저 등록 (self.setLayout(layout))
    • 레이아웃 매니저에 추가되는 위젯에는 인자값으로 부모 위젯을 지정할 필요가 없다.
    • 위젯의 크기나 위치를 명시적으로 설정하면 안됨.
    • 윈도우의 크기를 자유롭게 변경해도 내부 위젯이 일정한 비율을 가지며 크기가 자동으로 바뀐다.
    • QVBoxLayout 클래스 (위젯을 수직 방향으로 나열)
    • QHBoxLayout 클래스 (위젯을 행 방향으로 배치)
      • .addStrestch 메서드 (사용 방법에 따라 객체를 상단에 고정할 수 있음)
        • 인자값 1. 비율 ( 해당 수평 / 수직 박스 레이아웃의 비율 조정 )
      • .setStretchFactor 메서드
        • 인자값 1. 레이아웃, 2. 비율 (이 레이아웃 안의 인자 레이아웃의 비율 조정)
    • QGridLayout 클래스 (격자 형태의 UI를 구성하는 데 사용)
      • 격자에서 위젯을 배치할 좌표를 입력 받음.
      • addWidget 메서드에서 행과 열의 인덱스를 차례로 입력 받는다.
      • 각 행과 열에 대해 0부터 시작하는 정숫값을 통해 인덱싱
    • 레이아웃 매니저 중첩
      • 레이아웃 매니저 클래스에서 addWidget 메서드를 통해 레이아웃에 위젯을 추가하듯이 addLayout 메서드를 호출하면 레이아웃 매니저를 추가할 수 있음.
  • 다이얼로그
    • QFileDialog 클래스 (파일 열기 창)
      • 메서드 → .getOpenFileName() → 인자값 1. 부모
        • 변환된 파일 경로는 튜플 타입
    • QInputDialog 클래스 (사용자로부터 간단한 텍스트, 정수, 실수를 받을 때 사용)
      • 메서드
        • .getInt() → 정수 입력시
          • 인자값 1. 부모, 2. 타이틀 텍스트, 3. 내부 텍스트
          • 값 → (text, ok) 튜플 형태로 값을 반환 (사용자 입력 값, True & False)
        • .getDouble() → 실수 입력시
        • .getText() → 문자열 입력시
        • .getItem() → 개발자가 생성한 옵션 중 하나를 선택하고자 할 때
          • 인자값 1. 부모, 2. 타이틀 텍스트, 3. 내부 텍스트, 4. 선택할 아이템 리스트, 5. 초기 아이템 인덱스, 6. 아이템 수정 가능 여부(boolean)
        • 다이얼로그 창은 .close() 메서드로 종료 가능 → PyQt는 다 그런듯
    • exec_ 메서드 → 다이얼로그 창을 Modal 형태로 출력 (Modal 다이얼로그는 해당 다이얼로그 창을 닫을 때까지 부모 윈도우로 이동할 수 없다.)
  • matplotlib을 이용해 PyQt 내부에 그래프 그리기
    • FigureCanvasQTAgg 클래스
      • 인자값 1. plt.Figure()
      • 메서드
        • .draw() → FigureCanvas 객체에 그래프를 그리기 위해 사용.

좀 더 공부해야하는 부분

  • 레이아웃 매니저 (이건 만들어보면서 학습해야 할듯)

한줄평

이번 파트는 양이 많아서 한 챕터를 2일동안 공부했다. 그래도 시간적 여유가 있을 때 해서 이정도 밖에 안걸렸다고 생각해야지.

오늘 작성한 코드

learning layout · mildsalmon/AAT@ca16d24

learning layout 2 · mildsalmon/AAT@c1ef008

참고자료

박스 레이아웃 - Codetorial

PyQt 예제 쉬어가기 - 레이아웃 여백 조절

작성된 댓글이 없습니다!
로그인된 사용자만 댓글을 작성할 수 있습니다.