PyQt5로 간단한 GUI 애플리케이션을 빠르게 구축

1. 소개

Python GUI에 일반적으로 사용되는 세 가지 프레임워크는 Tkinter, wxpython, PyQt5입니다.

PyQt5는 Qt를 기반으로 하며 Python과 Qt의 조합으로 Python 언어로 플랫폼 간 GUI 애플리케이션을 작성할 수 있습니다.

Tkiner 및 wxpython과 비교하여 PyQt5는 인터페이스 디자인을 위해 내장된 Qt Designer 시각화 도구를 사용하므로 강력하고 아름다운 GUI 애플리케이션을 빠르게 개발할 수 있습니다.

2. 설치

Mac OSX를 예로 들면 PC에서도 작동이 비슷합니다.

먼저 시스템 내부에 qt 애플리케이션을 설치합니다.

python学习交流群:660193417###
# 安装qt
brew install qt

그런 다음 Python 가상 환경에 두 개의 종속 라이브러리 sip 및 pyqt5를 설치합니다.

# 安装依赖sip
pip3 install sip
 
# 安装依赖pyqt5
pip3 install pyqt5

다음으로 Pycharm에서 외부 도구를 구성하고 Qt Designer 및 PyUIC라는 두 개의 새 명령을 만듭니다.

# Qt Designer 配置
Program:/usr/local/Cellar/qt/5.14.1/libexec/Designer.app
Working directory:/usr/local/Cellar/qt/5.14.1/libexec
 
# PyUIC
# Python环境路径
Program:/usr/local/bin/python3.7
# 参数
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py 
# 路径【固定】
Working directory:$ProjectFileDir$
# Qt Designer 配置
Program:/usr/local/Cellar/qt/5.14.1/libexec/Designer.app
Working directory:/usr/local/Cellar/qt/5.14.1/libexec
 
# PyUIC
# Python环境路径
Program:/usr/local/bin/python3.7
# 参数
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py 
# 路径【固定】
Working directory:$ProjectFileDir$

그 중 Qt 응용 프로그램 폴더 설치의 첫 번째 단계에서 Designer.app과 libexec 파일 두 개를 찾아 구성
이미지 설명을 추가하세요
합니다 . ui 파일을 Python 파일로 변환
이미지 설명을 추가하세요
마지막으로 Pycharm에서 직접 Designer 인터페이스와 ui to py 파일을 빠르게 열 수 있습니다.
이미지 설명을 추가하세요

3. 공통 기능 소개

QtDesigner는 매우 강력한 GUI 디자인 도구이며 생성된 파일 형식은 다음과 같습니다. *
이미지 설명을 추가하세요
.ui QtDesigner는 주로 다음 6개 부분으로 구성됩니다.

메인 디자인 인터페이스 영역
제어 영역
제어 속성 영역
신호 및 슬롯 기능 영역
리소스 그림 영역
제어 구조 트리 영역

에,

주요 디자인 인터페이스 영역: 창 편집에 사용되는 최종 GUI 표시 영역

제어 영역: 레이아웃을 위해 창으로 직접 드래그할 수 있는 텍스트, 입력 상자, 선택기, 컨테이너 등과 같은 제어를 포함합니다.

속성 영역: 콘텐츠, 글꼴 크기, 너비 및 높이를 포함하여 컨트롤의 속성을 정의하는 데 사용됩니다.

신호 및 슬롯 기능 영역: 클릭, 선택 이벤트 등과 같은 컨트롤에 대한 이벤트 리스너를 지정하는 것은 매우 편리합니다.

리소스 그림 영역: 로컬 리소스 파일을 가져오고 그림과 같은 컨트롤에서 사용하는 데 사용

제어 구조 트리 영역: 매우 직관적으로 제어 간의 구조적 관계를 표시할 수 있습니다.

4. 예를 들어

1단계, 컨트롤 영역에서 인터페이스 디자인 영역으로 3개의 버튼과 2개의 입력 상자를 드래그합니다
이미지 설명을 추가하세요
.2단계, 컨트롤을 선택하고 마우스 오른쪽 버튼을 클릭하여 컨트롤 콘텐츠, 컨트롤 이름(id와 동일)과 같은 속성을 컨트롤에 추가합니다. , 일부 복잡한 속성 설정은 속성 영역에서 별도로 설정해야 합니다.

UI 인터페이스를 편집하면 *.ui 파일이 로컬로 생성됩니다.
이미지 설명을 추가하세요
3단계, *.ui 파일을 선택하고 Pycharm에서 PyUIC 명령을 사용하여 ui 파일을 py 파일로 변환합니다.

# ui文件转为py文件
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 790)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(130, 80, 111, 41))
        self.pushButton.setObjectName("pushButton")
        self.username = QtWidgets.QLineEdit(self.centralwidget)
        self.username.setGeometry(QtCore.QRect(260, 80, 271, 41))
        self.username.setObjectName("username")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(130, 150, 111, 41))
        self.pushButton_2.setObjectName("pushButton_2")
        self.password = QtWidgets.QLineEdit(self.centralwidget)
        self.password.setGeometry(QtCore.QRect(260, 150, 271, 41))
        self.password.setObjectName("password")
        self.login = QtWidgets.QPushButton(self.centralwidget)
        self.login.setGeometry(QtCore.QRect(260, 230, 141, 61))
        self.login.setObjectName("login")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "用户名:"))
        self.pushButton_2.setText(_translate("MainWindow", "密码:"))
        self.login.setText(_translate("MainWindow", "登录"))

4단계, 버튼에 대한 클릭 이벤트 추가

컨트롤 name.signal.connect(slot function) 형식을 사용하여 컨트롤에 대한 클릭 이벤트 리스너를 추가합니다.

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        # 为登录按钮指定事件
        # clicked:信号,login_met:槽函数
        self.login.clicked.connect(self.login_met)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def login_met(self):
        """
        登录事件(槽函数)
        :return:
        """
        # 用户名输入框的内容
        username = self.login.text()
        # 密码输入框的内容
        password = self.password.text()
 
        print("输入的用户名是:", username, "密码是:", password)

5단계, 인터페이스 표시

마지막으로 새 py 파일을 만들고 QApplication 개체를 인스턴스화하고 위에서 만든 MainWindow를 표시합니다.

import sys
 
from PyQt5.QtWidgets import QApplication, QMainWindow
 
# 界面文件
from temp import *
class CustomUI(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(CustomUI, self).__init__(parent)
        self.setupUi(self)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    cutomUI = CustomUI()
    cutomUI.show()
    sys.exit(app.exec_())

이 부분은 단지 GUI 인터페이스를 표시하는 로직을 호출하기 위한 것으로, 실제 프로젝트 개발 과정에서 약간의 변화가 있다는 점에 유의해야 합니다.
이미지 설명을 추가하세요

5. 요약

위의 예를 통해 PyQt5를 사용하여 GUI를 구축하는 것이 매우 편리합니다.대부분의 작업은 QtDesigner에서 수행한 다음 Pycharm으로 돌아가서 py 파일로 변환하고 신호 및 슬롯 기능을 작성하고 GUI 그래픽 사용자 인터페이스를 빠르게 개발할 수 있습니다.

рекомендация

отblog.csdn.net/m0_67575344/article/details/124369042