Python Gui开发(PyQt5)

一、Python GUI介绍 User Interface,简称 GUI,又称图形[用户接口](https://baike.baidu.com/item/%E7%94%A8%E6%88%B7%E6%8E%A5%E5%8F%A3);是指采用图形方式显示的计算机操作用户[界面](https://baike.baidu.com/item/%E7%95%8C%E9%9D%A2)。 GUI图形用户[界面](https://baike.baidu.com/item/%E7%95%8C%E9%9D%A2)(Graphical User Interface,简称 GUI,又称图形[用户接口](https://baike.baidu.com/item/%E7%94%A8%E6%88%B7%E6%8E%A5%E5%8F%A3);是指采用图形方式显示的计算机操作用户[界面](https://baike.baidu.com/item/%E7%95%8C%E9%9D%A2)。 Python 作为脚本语言,起初并不具备GUI工具,但由于本身具有良好的可拓展性,目前有相当多的GUI在python中使用 Python 常用GUI控件集有PyQt、Tkinter、wxPython、PyGUI、Kivy。 其中PyQt是Qt为python专门提供的GUI扩展。 二、常用GUI对比 ![image](http://upload-images.jianshu.io/upload_images/3536798-0fb281cff289f69a?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 三、PyQt介绍及开发实践 PyQt 是一个用于创建GUI应用程序的跨平台的工具包,它将Python编程语言和Qt库 成功融合在一起。QT库目前是最强大的GUI库之一。 PyQt可以运行在所有主流操作系统上,包括UNIX,Windows和Mac OS 。 自从Qt移植到Python 上形成PyQt以来,已经发出PyQt3, PyQt4, PyQt5 PyQt提供GPL版和商业版 **(1)安装:** **Ubuntu下:** uPyqt库: ```sudoapt-get install python-pyqt5 ``` uQt-designer: ``` sudo apt-get install qt5-designer ``` upyuic5 : ```sudo apt install pyqt5-dev-tools ``` uPyInstaller : ```pip install PyInstaller ``` **Windows下:** 进入pip目录(cd C:\Python34\Scripts) PyQt5库: ```pip3install SIP ``` ```pip3install PyQt5 ``` PyInstaller : ```pip install PyInstaller ``` **(2)开发过程介绍(以下均以windows下为例)** 1、Qt Designer 画图(Ctrl+R 预览) .ui 2、.ui转换为.py 方法:pyuic5 -o a.py a.ui 3、逻辑文件视情况开发完成业务逻辑 4、pyinstaller 打包.py转换为.exe(windows下可运行文件) **(3)Pyinstaller** Pyinstaller把python解释器和脚本打包成一个可执行文件,和编译成真正的机器代码是两回事。 打包后的可执行文件不具备可移植性,若要在不同操作系统上运行,就必须在该系统上重新进行打包 **安装**: ```pip install PyInstaller ``` **配置环境变量:** ```QT_QPA_PLATFORM_PLUGIN_PATH ``` ```C:\Python34\ ``` ![image.png](https://upload-images.jianshu.io/upload_images/3536798-6a17f6f7cfae0a4d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![image.png](https://upload-images.jianshu.io/upload_images/3536798-d00d58a57fac0f56.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 不配置环境变量,点击打包后的.exe运行Lib\site-packages\PyQt5\plugins 注:后直接闪退 提示:This application failed to start because it could not find or load the Qt platform plugin “windows”. **打包命令**:pyinstaller-F -pC:\python34;C:\Python34\Lib\site-packages\PyQt5; call_tools.py •-F,-onfile .打包成一个.exe文件 •-p,依赖包所在文件 **四、实践代码** (1)pyqt designer画图 ![image](http://upload-images.jianshu.io/upload_images/3536798-c510818a9a2cb7c3?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) (2)转换为.py文件 ```pyuic5 -o firstPyQt51.py firstPyQt51.ui ``` 生成的firstPyQt51.py如下 ``` #!/usr/bin/env python # -*- coding: utf-8 -*- from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(140, 60, 99, 27)) self.pushButton.setObjectName("pushButton") self.retranslateUi(Form) self.pushButton.clicked.connect(self.firtPyQt5_button_click) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "PushButton")) #接下修改下firstPyQt5.py文件,主要是去实现slot函数,因为之前在QtDesigner里没有实现,让它弹出一个消息框 def firtPyQt5_button_click(self): QtWidgets.QMessageBox.information(self.pushButton,"标题","这是第一个PyQt5 GUI程序") ``` (3)编写执行excute.py文件 excute.py内容如下 ``` # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QApplication, QWidget #导入相应的包 from PyQt5.QtWidgets import QApplication , QMainWindow from firstPyQt51 import * if __name__ == '__main__': """ 主函数 """ app = QApplication(sys.argv) #app = QApplication(sys.argv),每一个pyqt程序必须创建一个application对象, #sys.argv是命令行参数,可以通过命令启动的时候传递参数。 mainWindow = QMainWindow() #生成过一个实例(对象), mainWindow是实例(对象)的名字,可以随便起。 ui = Ui_Form() ui.setupUi(mainWindow) mainWindow.show() #用来显示窗口 sys.exit(app.exec_())#exec_()方法的作用是“进入程序的主循环直到exit()被调 ``` (4)执行python excute.py后点击”PushButton"弹出以下界面 ![image](http://upload-images.jianshu.io/upload_images/3536798-fa31ab064ec25b62?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 注意:如出现以下2个问题,请检查python,安装模块,电脑位数是否一致(64/32位) ``` ImportError: DLL load failed: %1 不是有效的 Win32 应用程序 ImportError: DLL load failed: %1 找不到指定的模块 出现以上问题,卸载后请安装重试,再次执行以下重试 1) 切换到python安装目录,cd C:\Python36 2) pip3 install SIP 3) pip3 install PyQt5  注意:电脑位数,python 位数,PyQt5库的位数对应 ``` 以上欢迎指正~~~ 参考书籍:PyQt5快速开发和实践

你可能感兴趣的:(Python Gui开发(PyQt5))