본문 바로가기
▶ Project_Python/◾ PyQt5 & Qt_Designer

QtDesigner 첫걸음, 가장 먼저 숙지해야할 부분

by ★→←★ 2021. 10. 12.
반응형

호기롭게 프로그램을 만들기를 도전하다 보면 예상치 못한 부분에서 헷갈리는 내용들이 발생하곤 합니다. 전문적인 교육을 받는다면 관련된 내용의 분류가 원활할 수 있지만, 그렇지 않은 경우 어디서부터 손을 대야 할지 혼란이 오기도 하죠. 이번 글에서는 QtDesigner와 파이썬 코딩의 구분과 연관성에 대해서 간략하게 언급합니다.

 

저와 같이 센스가 부족한 사람 혹은 경험이 부족한 경우라면 단순하게 접근하는 것이 좋다는 생각을 가지고 있습니다. 파이썬의 경우, 정형화된 방식이 존재하지 않기 때문에 자유롭게 자신의 문법을 만들어 갈 수 있는데, 경험이 없다면 이런 자유로움이 오히려 독이 될지도 모릅니다.

 

가장 좋은 방법은 다양하게 시도해보며 실패와 성공의 경험을 통해 자신만의 스타일을 완성해가는 것이라 할 수 있겠죠. 여기서 많은 분들이 포기할지도 모릅니다. 시간이 오래 걸리는 부분이기도 하니까 말이죠.

 

 

 

✔ 코딩 영역과 qt디자이너 영역의 구분

어쩌면 상당히 단순한 내용일 수 있습니다. 코딩을 통해 구현되어야하는 부분과 qt디자이너를 통해서 외관이 정립되어야 하는 부분을 구분하여 생각할 필요가 있다는 의미입니다.

 

가령 예를 들어, 여러분이 만들고자 하는 프로그램은 기능과 외관으로 크게 구분될 수 있습니다. 외관 또한 특정 라이브러리를 이용해 코드로 구성할 수 있습니다. 다만, 외관의 경우 직관적인 내용이 다수를 이루기 때문에 코드로만 진행한다는 것은 결코 쉬운 일이 아닙니다.

 

이 추상적인 작업에 도움을 줄 수 있는 것이 QtDesigner이며, 딱 거기까지만 도움을 줄 수 있습니다. 텍스트를 보여주는 부분, 버튼의 종류와 위치, 테이블의 위치 등을 잡아주고, 외관을 가져와서 기능에 관련된 코딩이 진행되면 결과적으로 간단한 프로그램이 완성되게 됩니다.

 

물론, 로그인과 같은 특정한 서비스에 필요한 기능들은 구현하는데 복잡할 수 있습니다. 많은 노력을 통해 이 부분을 해결하며 이겨낼 필요가 있겠죠.

 

 

- 코딩과 디자이너의 구분 정리

  • 프로그램의 외관까지 : QtDesigner를 이용해 ui파일을 구성합니다. 
    • ui파일을 살펴보면 html과 닮아있다는 것을 알 수 있습니다. 
    • html, css등에 대한 가벼운 지식이 있다면 도움이 될 수 있습니다.
  • 아주 사소한 부분이라도 기능의 구현이라면 : 여러분이 선택한 프로그래밍 언어로 코딩을 진행합니다.
    • 단순히 text를 보여주는 것 : 예를 들어, 버튼을 선택하면 특정 text를 출력하는 기능 등
    • 디자이너로 구성된 외관에서 기능이 구현되기 위해서는 연결 고리가 필요합니다.
      • 이 연결고리는 '시그널/슬롯 편집'을 통해 처리할 수 있습니다.
      • 예를 들어, 버튼을 생성하면 해당 버튼을 통해 구현되길 원하는 기능과 연결될 수 있도록 함수를 연결해야 합니다.

 

 

✔ 시그널/슬롯 편집에 대한 간략한 소개

사실 이 부분들은 간단한 예시를 통해 연습하는 것이 가장 좋은 방법이 될 수 있을 것입니다. 여기서는 가볍게 연동되는 부분들에 대해서 개념을 잡아볼 수 있으면 성공적이라 할 수 있습니다.

 

QtDesigner에는 기본적으로 몇몇 기능들에 대한 함수들이 존재합니다. 버튼과 특정 영역을 시그널/슬롯 편집을 통해 연결하하면 본격적인 코딩을 시작할 때 이미 구현되는 기능들을 살펴볼 수 있습니다. 

 

위 사진은 시그널/스롯 편집을 진행하는 과정을 대표적으로 보여주는 창들입니다. 이제 시작하는 분들이라면 여기서 굳이 내용이 어떤 것인지 깊이 생각할 필요는 없습니다. 단순히 이런 방법으로 진행하는구나 정도만 이해하는 것을 추천합니다.

 

 

✔ 시그널/슬롯 필수

QtDesigner를 통해서 외관을 완성했다면, 파이썬과 같은 프로그램언어를 통해서 하나의 프로그램을 만들어가게 됩니다. 앞에서도 언급했지만, 시그널/슬롯을 지정해주지 않는다면 프로그램은 구동하지 않습니다. 단순히 마음에 드는 모습만 보여줄 뿐이죠.

 

클래스의 함수에 기능을 연결하는 부분이 시그널이자 슬롯이라 생각하면 되겠습니다. 결국, 연산 혹은 특정 기능에 대해서 구동되게 하는 것은 연결된 함수의 이름에 맞는 기능을 코드로 작성해야만 합니다.

 

프로그램을 이용하는 입장에서는 다양한 이벤트가 발생될 수 있습니다. 입력, 클릭, 스크롤등의 액션을 통해서 어떤 결과로 연결되게 됩니다. 시그널/슬롯을 설정할 때, (위 사진의 큰 화면)에서 액션에 따른 함수를 지정할 수 있습니다.

 

즉, 버튼의 경우 클릭, 눌렀을 때, 다시 해제했을 때 등의 액션에 맞는 기능을 연결할 수 있습니다. 이 부분을 잘 생각해서 원하는 기능을 코드로 작성하여 전체 프로그램을 연결하게 되면 결과적으로 자신만의 프로그램을 완성할 수 있습니다.

반응형

댓글