파이썬 | PyQt5 소개

파이썬 | PyQt5 소개

GUI 애플리케이션을 개발하기 위해 Python에서 제공하는 옵션은 매우 많으며 PyQt5는 그중 하나입니다. PyQt5는 Qt v5용 Python 바인딩 세트인 크로스 플랫폼 GUI 툴킷입니다. 이 라이브러리가 제공하는 도구와 단순성 덕분에 대화형 데스크탑 애플리케이션을 훨씬 쉽게 개발할 수 있습니다. GUI 애플리케이션은 Front-end와 Back-end로 구성됩니다. PyQt5는 개발 속도를 높이고 백엔드 작업에 더 많은 시간을 할애할 수 있도록 드래그 앤 드롭 방식으로 프런트엔드를 디자인할 수 있는 'QtDesigner'라는 도구를 제공했습니다. 설치: 먼저 PyQt5 라이브러리를 설치해야 합니다. 이를 위해 터미널이나 명령 프롬프트에 다음 명령을 입력하십시오.

pip install pyqt5 

성공적으로 설치되면 다음 코드를 실행하여 확인할 수 있습니다.

>>>PyQt5 가져오기 

PyQt5는 많은 도구를 제공하며 QtDesigner는 그 중 하나입니다. 이를 위해 다음 명령을 실행합니다.

pip install PyQt5-tools 

첫 번째 앱 만들기 –

이것은 창에 버튼이 하나 있는 간단한 앱입니다. 해당 버튼을 클릭하면 메시지가 나타납니다. 당신이 나를 클릭했습니다. 시작하자 .

  • 우선 우리가 찾아야 할 것은 Qt디자이너 프런트엔드 부분을 생성합니다. – QtDesigner는 'site-packages/pyqt5_tools'에 있습니다. – site-packages의 위치를 ​​찾으려면 원하는 편집기를 사용하여 다음 Python 코드를 작성한 후 실행하십시오.
>>> 사이트 가져오기>>> site.getsitepackages() 
  • – '디자이너'라는 응용 프로그램을 실행하십시오.
  • 그림과 같이 창이 열립니다. '버튼 없는 대화 상자' 옵션을 선택하고 '만들기'를 클릭하세요.
  • 디자이너의 왼쪽에는 요구 사항에 따라 창에 끌어서 놓을 수 있는 다양한 위젯이 있습니다.
  • '푸시 버튼'과 '라벨'을 찾아 드래그 앤 드롭하세요.
  • 위젯을 마우스 오른쪽 버튼으로 클릭하고 '일반 텍스트 변경'을 선택하여 위젯 내부의 텍스트를 변경하세요. 라벨의 텍스트를 비워 두세요.
  • 프런트 엔드 레이아웃을 만들었으니 원하는 위치에 저장하기만 하면 됩니다. 이 파일의 확장자는 .ui라는 점을 기억하세요.
  • 위젯의 Python 형식을 가져오고 필요한 이벤트 리스너를 위젯에 연결하려면 .ui 파일을 .py 파일로 변환해야 합니다.

.ui 파일을 .py 파일로 변환:

  • 이를 위해서는 터미널이나 명령 프롬프트에서 sitepackages 디렉터리로 이동하여 아래와 같이 명령을 실행해야 합니다. 사이트패키지의 위치를 ​​얻는 것은 이전에 언급되었습니다.

>>> cd C:Users……ProgramsPythonPython36-32libsite-packages [사이트패키지 위치]>>> pyuic5 C:Users……FILENAME .ui[.ui 파일의 정확한 위치] -o C:Users…….FILENAME.py [.py 파일을 넣을 위치]

  • 마지막으로 Python 코드에 신호와 슬롯을 추가하여 완전히 작동하도록 하겠습니다.
widget.signal.connect(slot) 
  • 신호 클릭, 더블 클릭 등과 같은 특정 종류의 이벤트가 발생한 후 위젯에 의해 방출됩니다. 슬롯 이벤트 발생 후 일부 작업을 수행하는 호출 가능한 함수입니다.
  • 앱을 실행하고 버튼을 클릭하세요.

아래는 코드입니다 –

파이썬3




import> sys> from> PyQt5> import> QtCore, QtGui, QtWidgets> class> Ui_Dialog(> object> ):> > def> setupUi(> self> , Dialog):> > Dialog.setObjectName('Dialog')> > Dialog.resize(> 400> ,> 300> )> > self> .pushButton> => QtWidgets.QPushButton(Dialog)> > self> .pushButton.setGeometry(QtCore.QRect(> 150> ,> 70> ,> 93> ,> 28> ))> > self> .label> => QtWidgets.QLabel(Dialog)> > self> .label.setGeometry(QtCore.QRect(> 130> ,> 149> ,> 151> ,> 31> ))> > self> .label.setText('')> > self> .retranslateUi(Dialog)> > QtCore.QMetaObject.connectSlotsByName(Dialog)> > > # adding signal and slot> > self> .pushButton.clicked.connect(> self> .showmsg)> > def> retranslateUi(> self> , Dialog):> > _translate> => QtCore.QCoreApplication.translate> > Dialog.setWindowTitle(_translate('Dialog', 'Dialog'))> > self> .pushButton.setText(_translate('Dialog', 'Click'))> > > def> showmsg(> self> ):> > # slot> > self> .label.setText('You clicked me')> if> __name__> => => '__main__':> > app> => QtWidgets.QApplication(sys.argv)> > MainWindow> => QtWidgets.QMainWindow()> > ui> => Ui_Dialog()> > ui.setupUi(MainWindow)> > MainWindow.show()> > sys.exit(app.exec_())>