[PyQt5] Qt Designer로 GUI 틀 만들고 py파일로 바꾸기

반응형
    반응형

    이것저것 하다보니 글이 이리갔다 저리갔다 하고 있습니다만 그만큼 작업을 하면서 배우다보니 바삐 돌아가는 것 같습니다. 그래도 글이 다 모이면 순서를 갖출 수 있지 않을까 싶습니다.

     

    Qt 는 GUI 프로그래밍을 할 때 쓰는 라이브러리인데요. 보통 C에서 썼었던것같은데 이게 파이썬에서도 가능합니다. 

    Pyqt5로 불리고 있는데 이게 Qt입니다. 

    큰 틀은 Qt라서 Qt를 안다면 금방 익히지 않을까 싶습니다. 

     

    Pyqt5를 사용하면 tkinter나 wxpython과 다르게 직접 배치할 수 있는 프로그램(?)이 있습니다. 

    Qt Designer라는 프로그램인데요. 이를 이용해 GUI 틀을 만들고 py파일로 바꿀 수 있습니다.

    이번 포스팅에서는 Qt Designer를 이용해 GuI 틀을 만들고 py파일로 바꿔보겠습니다.

     

    Qt Designer 실행

    제 경험상 Qt Designer를 실행해야 하는데 이게 어디있는지 정확하게 알지 못해서 애를 먹었던 기억이 납니다.

    아나콘다를 설치했다고 생각하겠습니다. 파이썬만 따로 설치한 경우 Pyqt5를 따로 설치를 해야하는 것으로 알고 있어서 설치를 한 후 그에 맞게 찾아나가면 될것같습니다. 아무튼 아나콘다 기준으로 본다면 Qt Desinger은 아나콘다설치폴더 - Library - bin - designer.exe 에서 실행할 수 있습니다.

     

    실행하면 다음과 같이 뜹니다.

     

    실행하면 템플랫 폼을 선택하고 생성을 누르면 창이 생기고 GUI를 꾸밀 수 있게 됩니다.

    템플랫 폼은 다음과 같습니다.

    • Dialog with Buttons Bottom : 창의 하단에 확인-취소 버튼이 생성됩니다.
    • Dialog with Buttons Right : 창의 오른쪽에 확인-취소 버튼이 생성됩니다.
    • Dialog without Buttons : 버튼이 없는 빈 창이 생성됩니다.
    • Main Window : 메뉴바가 생성된 빈 창을 생성합니다.
    • Widget : 위의 창들은 모두 QDialog 클래스를 우선하는데 QWidget클래스를 우선하는 빈 창이 생성됩니다.

     

    GUI 만들기

    QtDesigner은 왼쪽에는 위젯상자가 있고 오른쪽에는 각 위젯에 대한 설정을 수정할수 있는 란이 있습니다. 

    왼쪽에서 위젯을 창으로 가져오고 위젯마다 설정이 필요하면 오른쪽에서 설정을 하면 됩니다.

    일단 간단한 ui를 만들어 보겠습니다.

     

     

    위젯에서 드래그에 가져와서 창에 붙이면 되는데요.

    Label 위젯을 가져와 Your name을 만들고 Line edit으로 Your name 옆에 빈칸을 만들었습니다. 

    마지막으로 push button을 가져와 확인을 만들었습니다. 

    이렇게 한 후 yourname.ui로 저장을 했습니다. 

     

    Py파일로 바꾸기

    cmd에서 pyuic5 를 이용하면 ui파일을 py파일로 바꿀 수 있습니다. 

    py로 바꿀 ui가 있는 폴더로 이동한 후 다음과 같이 입력합니다.

     

    pyuic5 yourname.ui -o yourname.py

     

    아래와 같이 ui가 있는 폴더로 이동해 실행합니다.

     

    cmd에서 실행을 하면 py파일을 생성합니다. 

    해당 폴더에 가보면 py파일이 있는 것을 확인할 수 있습니다.

    해당 py파일을 파이참으로 열어 코딩이 어떻게 되었는지 보겠습니다.

     

    이런식으로 코딩이 알아서 되어 있는것을 볼 수 있습니다. 

    이렇게 만든 클래스에 이벤트를 하나씩 연결하는 작업이 필요하지만 Qtdesigner를 이용해 틀을 간단하게 만들 수 있었습니다.

     

     

    댓글

    Designed by JB FACTORY

    ....