예제로 배우는 PyQt

예제 중심으로 배우는 PyQt 프로그래밍

예제로 배우는 PyQt 예제 중심으로 배우는 PyQt 프로그래밍

예제 작성 과정 #1 - Qt Designer를 이용하여 폼 제작

Qt Designer를 이용하여 화면을 구성

첫 예제를 작성한 과정을 따라하며 가장 기본적인 것들을 알 수 있을 것이다.

  • Qt Designer를 이용한 폼(Form) 만들기
  • 위젯을 사용한 화면 구성
  • 해당 위젯 속성 편집
  • 실행하기

PyQt를 설치하였다면 윈도우 시작 버튼을 누른 뒤, '모든 프로그램'에서 설치된 PyQt 그룹을 찾을 수 있다.

 

PyQt 그룹내에서 그림과 같이 'Designer' 찾아 를 실행한다.첫 화면으로 어떤 종류의 폼을 만들 것인지 물어보는 창이 아래와 같이 뜬다.  기본적으로 제공하는 Templet 중, 여기에서는 작은 빈창을 기본적으로 주는 'Dialog without Buttons' 를 선택하고 아래 생성 버튼을 누르자.

 

아래와 같은 빈 화면이 덩그러니 뜰 것이다. 이런 비주얼 툴을 사용하여 화면을 구성하는 것은 오래전부터 몇 몇 개발툴에서 지원을 해주어 익숙하며 당연시 하게 사용하고 있지만, 비주얼 툴을 사용하지 않는 환경에서 창을 하나 만들고 설정하는 시간은 결코 만만치가 않았다. 사실 PyQt도 Designer를 사용하지 않으면 많은 설정을 일일이 코드로 작성을 해주어야 한다. 어쨌든 우리는 쉽게 아래와 같은 작은 폼 하나를 생성했다.

 

이제 생성된 폼 위에 우리가 원하는 위젯(컴포넌트)라 불리는 요소들을 배치하여 사용할 수 있게 해보자. Qt에서 기본적으로 지원 되는 위젯은 우리가 흔히 보고 사용했던 것들이라 언떤 용도로 쓰는지 어렵지 않게 알 수 있을 것이다.

 

기본적인 위젯도구 위치를 기준으로 Qt Designer 좌측 패널에 위젯들이 모여 있으며, 위젯을 폼 위에 배치하기 위해서 해당 위젯을 끌어다가 원하는 곳에 놓아준다. 여기서 우리는 라벨이라고 불리우는 위젯을 폼 위에 배치해보자.

Display Widgets에 있는 Label을 마우스로 끌어서 적당한 곳에 배치한다.

 

라벨의 클릭했을때 보이는 각 점들을 이용하여 라벨위젯이 가지는 크기를 변경할 수 있다.

 

벨을 중앙에 정확히 배치하기 위해선 라벨위젯을 마우스로 끌어 정확히 맞추는 방법도 있겠지만 레이아웃위젯(Layout Widget)을 이용하여 손쉽게 해보자.  

  1. 폼의 빈곳, 정확히는 다른 위젯이 아닌 폼위젯(Form Widget)을 클릭하면 레이아웃 아이콘이 활성화된다.
  2. 수직배치 아이콘을 클릭하게 되면 폼위에 있는 위젯의 현재 크기 값은 무시되고 화면에 꽉 차게 들어간다.   

라벨을 위치시켰으니 이제는 라벨의 텍스트를 변경하고, 텍스트를 중앙 정렬해보자.

  • 일단 선택된 위젯, 라벨위젯이 맞는지를 속성 값을 보고 확인한다.
  • 원하는 폰트로 변경해 본다.
  • 마지막 상속단인 QLabel 에서 텍스트와 정렬 값을 변경한다.
    • text : 현재 'TextLabel' 이라 적힌 값을 'Hello World' 등으로 변경
    • align : 왼쪽정렬을 가운데 정렬로 변경

 

여기까지 진행이 되었으면 아래와 같이 Hello World! 를 보여주고 있는 윈도우창을 하나 볼 수 있게 된다.

  • 실행되었을 경우의 화면을 미리 볼 수 있다.  
    • Ctrl + R : 미리보기

지금까지의 작업을 저장하면 ui 라는 확장자를 가진 XML 형식의 파일을 만들 수 있다.

  • 파일을 원하는곳에 디렉토리를 만들어 저장한다.

댓글

댓글 본문
  1. 최가영
    파이썬 생초보인데요! 만들고 싶은 프로그램이 있어 찾아보다가 여기를 발견했습니다! 감사합니다!
  2. 임덕규
    제가 아직 게시하지 못한 예제 중에 있네요.
    i18n 예제입니다. 제 발표 자료 슬라이드도 함께 참고하시기 바랍니다.

    https://www.slideshare.net......yqt
    https://github.com......ion
    대화보기
    • 근초왕
      안녕하세요 이제 pyqt5 시작 단계입니다. 예제 감사했습니다.

      pyqt5 한글화는 어떻게 해야 되는건지 궁금합니다.
    • 임덕규
      일단 python에 대한 이해를 먼저 하시기 바랍니다. 디자이너 사용은 자주하는 편입니다. 커스텀 위젯을 작은 단위로 만들어서 사용하신다면 디자이너를 사용하시더라도 무리는 없습니다.

      초반 예제를 이해하게 되면 뒤에 나오게될 예제코드는 응용 수준으로 쉽게 사용하실 수 있을것입니다. 감사합니다.
      대화보기
      • 귤귤
        1. Qt designer 한글은 어떻게 설정할까요 ??

        2.그리고 PyQt5로 시작해서 .exe실행 Tool 만들어서 사내에서 사용하려고 배워보려는데,
        앞에 컨퍼런스영상 보니 디자이너 사용하는 것보다 직접 코딩하는것을 선호하시는 것 같은데요,
        Designer 활용하는 것부터 예제 쭉 따라가면서 학습을 해보면 코딩만으로 tool 제작 가능하게끔 될까요 ??
        그냥 소스코딩 봐서는 아직 self. 도 그렇고 이해가 잘안되어서 ^^;;...

        감사합니다.
      • 쩐쩐
        감사합니다!
      • 임덕규
        위에 글을 읽어보시면 QLabel의 속성 값중 text에 Hello World! 를 입력해주고 있습니다.
        대화보기
        • 제임스
          hello world를 입력하지 않았는데... 어떻게 출력이되지요 ?
        • 임덕규
          많은 도움되시길 바랍니다.
          대화보기
          • 최서현
            감사합니다. 많은 도움이 됩니다.
          • ㅂㄱㄱ
            파이썬 코드와 연결할 초기 gui가 필요했는데, pyqt에 대한 좋은 자료가 있는 것 같습니다.
            많은 도움이 될 것 같습니다. 미리감사요~
          • 임덕규
            감사합니다. 많은 도움되길 바랍니다.
            대화보기
            • 김준상
              알찬자료 잘 보고 있습니다.
            • ㅅㅂㅈ
              다음을 위해 form.ui 이름으로 저장 하셔야 합니다.
            버전 관리
            임덕규
            현재 버전
            선택 버전
            graphittie 자세히 보기