📜  Python| PyQt5 简介

📅  最后修改于: 2022-05-13 01:54:41.087000             🧑  作者: Mango

Python| PyQt5 简介

Python提供了很多选项来开发 GUI 应用程序,PyQt5 就是其中之一。 PyQt5 是跨平台的 GUI 工具包,一组用于 Qt v5 的Python绑定。由于该库提供的工具和简单性,人们可以非常轻松地开发交互式桌面应用程序。

GUI 应用程序由前端和后端组成。 PyQt5 提供了一个名为“QtDesigner”的工具,通过拖放的方法设计前端,这样开发可以变得更快,并且可以在后端的东西上留出更多的时间。

安装:

首先,我们需要安装 PyQt5 库。为此,请在终端或命令提示符下键入以下命令:

pip install pyqt5

如果安装成功,可以通过运行代码来验证它:

>>>import PyQt5

PyQt5 提供了很多工具,QtDesigner 就是其中之一。为此运行以下命令:

pip install PyQt5-tools

创建您的第一个应用程序 -

这是一个简单的应用程序,在窗口中有一个按钮。单击该按钮后,将出现一条消息“你点击了我”。让我们开始吧

  • 首先,我们需要找到QtDesigner来创建前端部分。
    – QtDesigner 位于“site-packages/pyqt5_tools”
    – 要查找站点包的位置,请使用您选择的任何编辑器编写以下Python代码,然后运行:
    >>> import site
    >>> site.getsitepackages()

    – 运行名为“designer”的应用程序。

  • 将打开一个窗口,如图所示:

    选择“没有按钮的对话框”选项,然后单击“创建”

  • 在设计器的左侧会有各种小部件,可以根据我们的要求在我们的窗口中拖放。

  • 查找并拖放“按钮”和“标签”。

  • 通过右键单击小部件并选择“更改纯文本”来更改小部件内的文本。将标签的文本保留为空白。

  • 我们已经创建了前端布局,只需将其保存在您想要的位置。请记住,此文件将具有 .ui 作为扩展名。

  • 我们需要将.ui文件转换为.py文件以获取小部件的Python形式并为其附加必要的事件侦听器。

    .ui文件转换为.py文件:

    为此,我们必须在终端或命令提示符下进入 satpackages 目录并运行如下所示的命令。前面提到了获取站点包的位置。

  • 最后,我们将在Python代码中添加信号和槽以使其功能齐全。
    widget.signal.connect(slot)

    在发生某种事件(如单击、双击等)后,小部件会发出信号
    插槽是在事件发生后将执行某些操作的任何可调用函数。

  • 运行应用程序并单击按钮。

下面是代码——

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_())