Python Gui开发(PyQt5)

一、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对比

image

三、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

image.png

不配置环境变量,点击打包后的.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

(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

注意:如出现以下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版本和环境的工具。p–非常简单的交互式python版本管理工具。pyenv–简单的Pyth...
    MrHamster閱讀 2,638評論 1 59
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克閱讀 1,163評論 1 2
  • 一般来说开发windowGui使用较多的是c++的Qt,因为之前做过类似的项目,觉得c++开发起来太过繁琐。所...
    披风海胆放閱讀 1,376評論 1 4
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile閱讀 19,783評論 6 416
  • Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资...
    天外飞仙丶閱讀 8,129評論 0 256