一、Python GUI介绍
User Interface,简称 GUI,又称图形用户接口;是指采用图形方式显示的计算机操作用户界面。
GUI图形用户界面(Graphical
User Interface,简称 GUI,又称图形用户接口;是指采用图形方式显示的计算机操作用户界面。
Python 作为脚本语言,起初并不具备GUI工具,但由于本身具有良好的可拓展性,目前有相当多的GUI在python中使用
Python 常用GUI控件集有PyQt、Tkinter、wxPython、PyGUI、Kivy。
其中PyQt是Qt为python专门提供的GUI扩展。
二、常用GUI对比
三、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\
不配置环境变量,点击打包后的.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画图
(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"弹出以下界面
注意:如出现以下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快速开发和实践