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 目录并运行如下所示的命令。前面提到了获取站点包的位置。
>>> cd “C:\\Users\\……\\Programs\\Python\\Python36-32\\lib\\site-packages” [Location of sitepackages]
>>> pyuic5 “C:\Users\……\FILENAME.ui”[Exact location of .ui file] -o ” C:\Users\…….\FILENAME.py” [Location where want to put .py file]
- 最后,我们将在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_())