前言

本人从今年4月份左右开始想自学python和pyqt5,主要是想提升一下自己的技能,我是一个汽车电子嵌入式软件工程师,每天就是C语言和AutoSAR,感觉都不好意思自称为一个“码农”,于是乎在一个大哥的建议下,我开始了自学python,选择pyqt5则是因为希望能开发出一点小工具来服务我的本职工作,double win。写这个学习笔记一是想记录自己自学路上的点滴,激励自己,也可以给需要的朋友一点参考。

学习过程中踩了很多坑,很多都是工具版本和电脑开发环境造成的,所以在文章开始,介绍一下我使用的环境:

64位windows10

python 3.6.3

pycharm社区版(2018/1/4)

环境安装

环境的安装参考了CSDN很多前辈的帖子,主要要做的就是安装python,用python的pip(可以理解为python自己的appstore,里面可以下载很多工具)。

python安装

官网:https://www.python.org/

去download里面找到自己要用的版本和适合自己操作系统的下载包,下载安装即可,要注意的是要记得勾选将python自动加入环境变量PATH的选项。

安装好后可以打开cmd窗口(在任意文件夹空白处shift+右键即可)输入python,可以查看自己安装的信息:

PyQt5安装

之后就是安装pyqt5了,可能会提醒要你更新pip,只需要按照命令窗口里的提示输入即可。

关于pyqt5和装完后要装的pyqt5-tools,建议用douban的镜像,下载速度不是快一点半点,在命令行输入以下命令来安装:

pip install PyQt5 -i https://pypi.douban.com/simple
pip install PyQt5-tools -i https://pypi.douban.com/simple

安装完成后,在python的安装目录的这个路径下能找到,记得讲tools的路径加入环境变量。

在命令窗口输入

pip list

也能看到你用pip安装的所有工具:

PyCharm安装

Pycharm直接去官网下载即可:http://www.jetbrains.com/pycharm/download/#section=windows

这里提倡大家不要用破解版,社区版是免费的。毕竟大家都是软件开发者,互相尊重一下。

PyCharm中建立第一个工程

配置

环境和工具安装好后我们终于进入了实战,首先打开PyCharm后,要进行一系列配置,首先从project interpreter开始:

File->settings->project interpreter

选择你的python.exe:

接下来配置我们要用的工具。

File->settings,添加external tools

点击绿色的加号来添加一个工具,qt的exe就在之前安装的pyqt5-tools内:

这个工具配置可以让你用pycharm这个IDE来打开qtdesigner。

接下来添加下一个工具:

这里的program要选择安装的python.exe,参数那里填:

-m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py

这个工具其实是一个脚本,用处就是把你用qtdesigner设计的ui界面从ui格式转化为py!

现在我们的前期配置工作到此完成。

UI设计

在tools里选择刚添加的Qtdesigner,打开后就是qt的界面设计画面。

UI转PY

界面设计好后,保存在项目路径下,这时你会看到项目里已经有了刚保存的ui文件:

右键ui文件,选择刚添加的外部工具PyUIC,把ui文件转换为py文件:

UI与逻辑的分离

接下来要做的,是分离UI和逻辑,这非常重要,我们要达到的效果就是,如果你的UI更改,你只需要重新转换一次ui成py,而你处理业务逻辑的代码不用更新,这里拿我另一个工程为例:

MG_MainWindow.ui是用qtdesigner做出来的界面文件,MG_MainWindow.py是由它转换而来,而这个界面所有的逻辑处理,我会放在另一个py文件MainWindow_Business.py中:

MG_MainWindow.py:

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'MG_MainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.11.2
#
# WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(863, 642)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(110, 210, 75, 23))self.pushButton.setObjectName("pushButton")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 863, 23))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.pushButton.setText(_translate("MainWindow", "PushButton"))

MainWindow_Business.py:

from PyQt5 import QtWidgets
from MG_MainWindow import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):def __init__(self, parent=None):super(MainWindow, self).__init__(parent)self.setupUi(self)

接着,我建立一个main.py文件来放置让界面可以运行起来的代码:

main.py:

import sys
from MainWindow_Business import MainWindow
from PyQt5 import QtWidgetsif __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)mainWindow = MainWindow()mainWindow.show()sys.exit(app.exec_())

最后在pycharm里右键run main.py的效果就是:

至此,我们做出了一个最简单的界面并让它在IDE里run了起来。

打包成EXE

好了,曾经最让我头疼的部分来了,目前做出来的东西只能在安装了python环境的PC上(个人电脑)运行,如果我想在公司也用我自己制作的工具,那就需要将py文件打包成exe,好在windows环境下也能运行。

打包python,主流的工具有:

py2exe

cx-Freeze

pyinstaller

其中py2exe我一直没研究清楚,所以本文中不会讨论。

pyinstaller:我试了好几个小时,一直没能成功,每次都警告我找不到一些api-ms-***的动态库,后来我在pyinstaller的github页面看到了针对我这个问题的讨论,看起来win10上是没法正常使用了,我甚至无法打包最简单的helloworld.py 

最终我转投了cx-Freeze:

cx-Freeze的下载安装也在pip中进行

pip install cx-Freeze

使用时,建议使用写setup.py运行的方法,以下是我的例子,这个文件跟其他py文件放在一起:

from cx_Freeze import setup, Executable
import sys
base = 'WIN32GUI' if sys.platform == "win32" else Noneexecutables = [Executable("main.py", base=base,targetName='MetalGear.exe',icon="icon1.ico")]
py_modules = ['main','MainWindow_Business','MG_MainWindow']packages = []
include_files=[]
options = {'build_exe': {'packages':packages,'include_files': include_files},}setup(name = "prog",options = options,version = "1.0",description = 'desc of program',executables = executables
)

其中icon1.ico是图标,在这个路径下打开控制台,输入命令可以开始打包,你也可以建立一个.bat脚本:

python setup.py build

之后会在当前目录建立一个build文件夹,你的exe就在里面:

双击exe运行界面:

关于打包工具cxFreeze,它的功能还有很多,我今后还会持续研究。

就这样,我们将py工程打包成了在windows环境下也能运行的exe。

从Noob开始学习python/pyqt5(1)环境安装,工程搭建与打包exe相关推荐

  1. python新手之一环境安装

    今天开始学习python,首先环境安装 1.下载安装 在https://www.python.org/downloads/下载python2.X或者3.X(ps:这里建议下载32位的python ,因 ...

  2. python学习笔记1之-python简介及其环境安装

    python学习笔记之-python简介及其环境安装 最近几年python之火不用多说,最近开始利用时间自学python,在学习的过程中,按照自己的思路和理解记录下学习的过程,并分享出来,如果正好你也 ...

  3. 第一章 Python Kivy 学习 -- Kivy介绍及环境安装

    系列文章目录 第一章 Python Kivy 学习 – Kivy介绍及环境安装 第二章 Python Kivy 学习 – Kivy项目开发原理(待编辑) 第三章 Python Kivy 学习 – Ki ...

  4. 自学python需要安装什么-Python自学之环境安装

    原标题:Python自学之环境安装 网上有各种Python环境安装的教程,看似简单但只有自己亲身实践才知有好多坑.作者在Windows 7 32位操作系统下部署Python环境(这里遇到的一个坑是Wi ...

  5. Spark学习笔记[1]-scala环境安装与基本语法

    Spark学习笔记[1]-scala环境安装与基本语法   正所谓工欲善其事必先利其器,Spark的开发语言不是java而是scala,虽然都是运行于JVM,但是两门语言的基本特性还是有些不一样,这里 ...

  6. python + uiautomator2编译平板语言工具并切换打包exe可执行文件

    python + uiautomator2编译平板语言工具并切换打包exe可执行文件 初版: 在命令行输入 adb shell am monitor 2.点击打开要获取包名的应用 3.在命令行则会显示 ...

  7. 深度学习之pytorch(一) 环境安装

    快2周没更新博客了,别问为什么!我才不会告诉你忙的飞起!说心里话,个人更喜欢用tensorflow来做深度学习! 一.环境配置 1.win10 64位系统: 2.anaconda3: 3.不管是CPU ...

  8. bash: go: 未找到命令_【安全入门】centos7java/python/go语言环境安装

    搞技术的肯定都得有几台虚拟机,同时也得弄几个vps,尤其是做网安的,复现个环境,最少用一个虚拟机.不管是开发还是做网络安全(脚本小子),linux机器是必备,一般选ubuntu或者centos 7,每 ...

  9. python与数值计算环境安装

    数值计算的编程的软件很多种,也见过一些编程绘图软件的对比. 利用Python进行数值计算,需要用到numpy(矩阵) ,scipy(公式符号), matplotlib(绘图)这些工具包. 1.Linu ...

最新文章

  1. 互联网50年类脑架构技术演化图
  2. 已解决:pod资源清单yaml中各字段详解
  3. 测开之路十五:构造函数、析构函数
  4. Python flask出现jinja2.exceptions.TemplateNotFound错误(修复host就好了???)
  5. Unity 2017 Game Optimization 读书笔记(1)Scripting Strategies Part 1
  6. Hibernate 系列 02 - Hibernate介绍及其环境搭建
  7. awk高级企业级使用案例
  8. 耐驰测试仪上的软件,Proteus
  9. 修改火狐扩展之自定义hackbar
  10. c语言互不相同删除法,GitHub - MXHDOIT/C_Practice: 100道C语言经典习题
  11. 神器分享:字母汉字图标ICON生成器
  12. Ubuntu16.04配置GPU驱动(GTX1060)+ CUDA9.0 + CUDNN7.0.5
  13. input文本框--去首尾空格
  14. Lost connection to MySQL server during query问题
  15. 如何将旧Mac的数据迁移到新的MacBook Pro
  16. python设计一个动物类_【Python】每日一练:设计圆类计算周长和面积、设计动物类...
  17. Matlab绘制各种小波函数及尺度函数图
  18. 美的地产竞得石家庄50亩地块 美的布局开始
  19. 8750H带的动MATLAB2019吗,i7-8750H处理器对比7代i7-7820HK跑分测试
  20. 【知乎(从第10人开始最新补充)】你熟知的领域有哪些重要的知识或思维方法,业外人士因爲不瞭解它們而常常陷入困境?

热门文章

  1. aptio2018设置u盘启动_系统重装u盘启动怎么设置_重装系统设置U盘启动的步骤-win7之家...
  2. 模型过拟合原因及解决办法
  3. 【selenium】Windows平台下使用python自动登陆网关 (更新至 v1.1.0)
  4. 架构思想--基础架构
  5. 【附源码】Python计算机毕业设计社区养老信息管理系统
  6. [Spark的TopN算法实现]
  7. thinkpad开机键在哪
  8. 联想Y510p笔记本台达电版电源型号和参数
  9. 苹果iPhone自研PC处理器架构细节曝光:性能对比Intel直接溢出
  10. autoCAD2002-2022安装教程