基于PyQt5的Python-Gui开发
环境搭建
- 电脑环境
- win10 64位系统
- Python3.5安装
- 从Python官网下载python3.5安装文件,选择windows 64位版本python-3.6.5-amd64.exe。双击安装。在安装的过程中可勾选自动设置环境变量
- PyQt5.6安装
- 从PyQt官网下载安装文件,由于最新版本的PyQt5.7需要自主编译安装,无可执行的安装文件,所以我们这里下载5.6版本,找旧版本的下载地址,在这里我们我们选择64位版本的PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x64-2.exe。下载后可以直接双击安装,其中有一步要指定Python的安装位置,如果上一步中已经定义过Python的环境变量,这里可以自动设置。
- 或者参考pip安装
pip install -i https://pypi.douban.com/simple pyqt5 pip install -i https://pypi.douban.com/simple pyqt5-tools
安装到这里PyQt编程环境基本满足,后续可以选择安装IDE环境。创建一个程序运行测试环境是否安装成功
1
2
3
4
5
6
7
8
9 import sys
from PyQt5 import (QtWidgets, QtCore) app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(480, 320)
widget.setWindowTitle("Hello, PyQt5.8!")
widget.show()
sys.exit(app.exec())
- 配置pycharm
- 配置python解释器:打开pycharm->ctrl+alt+s->Project Interpreter
- 设置Qt Designer:打开pycharm->ctrl+alt+s->Tools->External Tools ->点击加号;
- Name:QtDesigner
- Programs:D:\Python\Python36\Lib\site-packages\pyqt5_tools\Qt\bin\designer.exe(需要修改为你电脑里边的“designer.exe”路径)
- Working directory:$FileDir$
- 配置PyUIC:打开pycharm->ctrl+alt+s->Tools->External Tools ->点击加号;
- Name:PyUIC
- Programs:D:\Python\Python36\python.exe(需要修改为你电脑里边的“python.exe”路径)
- Parameters: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
- Working directory:$FileDir$
使用Qt Designer
- 完成以上步骤之后,点击 Tools -》External Tools -》Qt Designer 启动我们的Qt Designer

- 启动后选择:Widget,建立空白的窗口,点击 Create,其他默认就行

- 从左边 1区 拖拽,注意是“拖拽”控件到 2区,在 3区 中修改对应属性

- 完成基本的界面设置之后,会看到同目录下生成了一个“.ui”的文件

- 右键 External Tools -》PyUIC ,将“.ui”文件转为“.py”文件

- 这时,如果一切正常,没有报错的话,会在同目录下生成对应的“.py”文件

将下面的代码,放到生成的“.py”文件,放到最后就行(注意缩进)
1
2
3
4
5
6
7
8
9
10if __name__=="__main__":
import sys
from PyQt5.QtGui import QIcon
app=QtWidgets.QApplication(sys.argv)
widget=QtWidgets.QWidget()
ui=Ui_Form()
ui.setupUi(widget)
widget.setWindowIcon(QIcon('web.png'))#增加icon图标,如果没有图片可以没有这句
widget.show()
sys.exit(app.exec_())运行启动,好了,恭喜你,开启了pythonGUI

打包项目生成exe文件
使用pyinstaller打包Python3.5+PyQt5.6项目生成exe文件
- pywin32安装
- pyinstaller安装
- pip install pyinstaller
- https://github.com/pyinstaller/pyinstaller/releases 下载3.3.1 源码安装
python setup.py install
- pyinstaller使用方法
pyinstaller [opts] ***.py可选的opts有:
-F, –onefile 打包成一个exe文件。
-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
-c, –console, –nowindowed 使用控制台,无界面(默认)
-w, –windowed, –noconsole 使用窗口,无控制台pyinstaller -F -w login.specspec文件用来进行配置多文件和图片等的打包配置- 打完包后,必须的配置文件和代码需要放在exe文件的相同目录下
打包测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#采用一个calculator的代码对pyinstaller进行测试。
import sys
from math import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import (QApplication, QDialog, QLineEdit, QTextBrowser,
QVBoxLayout) class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.browser = QTextBrowser()
self.lineedit = QLineEdit("Type an expression and press Enter")
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineedit)
self.setLayout(layout)
self.lineedit.setFocus()
self.lineedit.returnPressed.connect(self.updateUi)
self.setWindowTitle("Calculate") def updateUi(self):
try:
text = self.lineedit.text()
self.browser.append("%s = <b>%s</b>" % (text, eval(text)))
except:
self.browser.append("<font color=red>%s is invalid!</font>" % text)
self.lineedit.setText('') if __name__=="__main__":
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()代码保存为calculator.py,直接用python解释器运行,可以得到如下窗口:

- 打开命令行窗口,进入calculator.py所在目录。运行下面指令
pyinstaller -F -w calculator.py
- pyinstaller自动执行一系列过程,最后在同目录下的dist文件夹中生成了calculator.exe。


- calculator.exe运行效果与之前直接用解释器运行相同

FAQ
- pyinstaller打包pyqt5问题解决
- Cannot find existing PyQt5 plugin directories Paths checked: C:/Qt/5.6.0/plugins
- 1.创建C:/Qt/5.6.0/plugins目录,2.将pyqt5.dll,pyqt5qmlplugin.dll文件添加至目录下
- 打包成功后,打开exe文件,报错could not find or load the Qt platform plugin “windows”
- 把xxx\site-package\PyQt5\Qt\plugins\platforms 文件夹复制到生成的 目标.exe 文件目录下
- Cannot find existing PyQt5 plugin directories Paths checked: C:/Qt/5.6.0/plugins
基于PyQt5的Python-Gui开发的更多相关文章
- 程序员之路:python3+PyQt5+pycharm桌面GUI开发(转)
程序员之路:python3+PyQt5+pycharm桌面GUI开发 http://blog.sina.com.cn/s/blog_989218ad0102wz1k.html 先看效果: 图 1 没错 ...
- Python3+PyQt5+PyCharm 桌面GUI开发环境搭建
Python3+PyQt5+PyCharm 桌面GUI开发环境搭建 一.安装python PyQt5所支持的python版本是不低于3.5版本 python3.5以上的版本安装:https://www ...
- Python GUI开发环境的搭建
原文:Python GUI开发环境的搭建 最近对Python的开发又来了兴趣,对于Python的开发一直停留在一个表面层的认识,玩的部分比较大. Python的入手简单,语法让人爱不释手,在网络通信方 ...
- Python GUI开发,效率提升10倍的方法!
1 框架简介 这个框架的名字叫 PySimpleGUI,它完全基于Python语言,能非常方便地开发GUI界面,代码量相比现有框架减少50%到90%.并且,它提供了极为友好的Python风格的接口,大 ...
- 程序员之路:python3+PyQt5+pycharm桌面GUI开发
http://blog.sina.com.cn/s/blog_989218ad0102wz1k.html 先看效果: 图 1 没错,学过C#的同学应该很熟悉这个界面,按钮风格和界面风格很相似,万万没想 ...
- Python3+PyCharm+PyQt5配置进行GUI开发
一.安装Python3.5以上版本. 链接:https://www.python.org/downloads/windows/ 二.安装PyQt5. 使用pip安装:1.进入 C:\Users\你的计 ...
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...
- 【python】python GUI开发框架介绍
Python GUI开发的库不少.最常用的的也就几个. Tkinter -Tk是Python自带的GUI库, 上手简单, 做个简单界面基本够用了,但是不够美观,功能不全面. wxPython -开源免 ...
- 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子
本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...
- 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET
解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET 解决基于BAE python+bottle开发上的一系列问题 分类: python ...
随机推荐
- MongoDB入门_相关网站
几个重要的网站 1.MongoDB官网:https://www.mongodb.org 2.MongoDB的国内官网https://www.mongoing.com 3.MongoDB的中文文档htt ...
- STM32内核简介
STM32F407 的内核是cortex-M4 采用的是ARM架构,具体是ARM-V7架构. 而ARM-V7架构分为三个系列: 1>.A系列:面向尖端的基于虚拟内存的操作系统和用户应用: 2 ...
- 【ARC101F】Robots and Exits 树状数组优化DP
ARC101F Robots and Exits 树状数组 有 $ n $ 个机器人和 $ m $ 个出口.这 $ n $ 个机器人的初始位置是 $ a_1,a_2.....a_n $ ,这 $ m ...
- Azure IoT 技术研究系列4
上两篇博文中,我们介绍了将设备注册到Azure IoT Hub,设备到云.云到设备之间的通信: Azure IoT 技术研究系列2-设备注册到Azure IoT Hub Azure IoT 技术研究系 ...
- man wc
WC(1) User Commands/用户命令 WC(1) NAME/名称 wc - print the number of newlines, wo ...
- linux运维、架构之路-redis
一.redis介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis属于非关系型数据库和Memcached类似,redis也是一个key- ...
- JDK,JRE与JVM浅析
JAVA的两个特性: 1, 开源-指的是源代码免费 2,跨平台(可移植性好) 跨平台:是指跨操作系统 JVM(java virtual machine,java虚拟机) JVM就像是两国谈判时的使者充 ...
- Mobile的HTML5网页内快速滚动和回弹的效果
style="overflow: auto;-webkit-overflow-scrolling: touch; 这个可以让页面在Native端滚动时模拟原生的弹性滚动效果 下面是微信浏览器 ...
- 记一下今天上下班学的Thread
1 Thread 默认为前台线程,即主程序退出后,线程还可以继续(曾经就掉入这个坑中,使用两线程分别进行UDP收发,结果发线程结束了退出方法,收线程还在继续) 2 Thread 没有可以暂停,可以重新 ...
- Centos7 yum安装OpenLDAP(普通用户可以更改密码)
环境 系统版本:centos7.4 openldap版本2.4 安装和配置 安装并启动服务 安装: yum install openldap openldap-servers openldap-cli ...
