- 施法前摇
- 第三方库准备
- IDE配置
- UI设计
- 交互设计
- 打包成exe文件
- 原码和软件在这里
老规矩,先上效果图,题目:
往下滑答案:
施法前摇 第三方库准备首先安装第三方库:
pip install pyqt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
注意三个点:
- 上述命令是临时换源(国内源),想一劳永逸,即直接运行pip install pyqt5即可安装的,建议观看视频:
pip配置国内源,速度快得飞起——wifi有多快下载有多快!
- 如果你使用的是Anaconda下的Python的话,那你就不得不将pip的安装路径改到Anaconda下,不然你import PyQt5就会报错,上个视频的后半段可以解决这个问题,当然如果你是天选之子,下面还有两个视频:
天选之子必看1,又双叒叕报错:No module named ‘PyQt’
IDE配置天选之子必看2,又双叒叕报错:No module named ‘PyQt’
我的IDE是Pycharm,如图所示,为了方便起见,最好在IDE里面正确集成这些插件。
将QtDesigner、PyUIC 集成到IDE:
- 点击文件(file)打开设置(setting)
- 从上往下数,找到此选项,点击加号:
- 好,现在我们来填表:
| Q t D e s i g n e r QtDesigner QtDesigner | 内容 |
|---|---|
| 名称 | QtDesigner |
| 描述 | QtDesigner.exe |
| 程序 | C:ProgramDataAnaconda3Librarybindesigner.exe 这是designer.exe的绝对路径,如果你找不到的话, 建议用Everything等快速查找工具,找到后复制全路径粘贴 |
| 实参 | 不填 |
| 工作目录 | $ProjectFileDir$ |
| P y U I C PyUIC PyUIC | 内容 |
|---|---|
| 名称 | PyUIC |
| 描述 | PyUIC.exe |
| 程序 | C:ProgramDataAnaconda3Scriptspyuic5.exe 这是pyuic5.exe的绝对路径,如果你找不到的话, 建议用Everything等快速查找工具,找到后复制全路径粘贴 |
| 实参 | $FileName$ -o $FileNameWithoutExtension$.py |
| 工作目录 | $ProjectFileDir$ |
注:我这里还装了一个 P y R C C PyRCC PyRCC,本文用不上,就不予赘述了。
- 看看成果
选
Main Window
点击
创建(R)
就像做PPT一样,把组件拖进去,然后命名好各个组件,最好是下划线命名法,英文好的用英文,拼音好的用拼音。
表来!
| 名称 | 英文 | 拼音 |
|---|---|---|
| 被加数 | augend | |
| 加数 | addend | |
| 被减数 | minuend | |
| 减数 | subtrahend | |
| 被乘数 | multiplicand | |
| 乘数 | multiplier | |
| 被除数 | dividend | |
| 除数 | divisor |
双击就可以把ui文件(MyGui.ui)转换为py(MyGui.py)文件,接下来就是自适应全屏:
在
MyGui.py文件下(class Ui_MainWindow(object):这一行的前面)
加入以下代码
"""获取真实的分辨率""" import win32con import win32gui import win32print hDC = win32gui.GetDC(0) # 横向分辨率 width = win32print.GetDeviceCaps(hDC, win32con.DESKTOPHORZRES) # 纵向分辨率 height = win32print.GetDeviceCaps(hDC, win32con.DESKTOPVERTRES) - 100
然后就可以批量替换ctrl+R
将原来的QRect的固定值(x坐标(左上角为0), y坐标(左上角为0), 长, 宽)替换为与width、height有关的参数,另外to do功能也十分方便。
接下来开始写交互事件:
新建一个Python文件,比如AA.py
import sys
import numpy as np
from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox
from MyGui import * #界面生成的python文件名
class MyMainWindow(QMainWindow, Ui_MainWindow): #界面生成的python文件中类名
def __init__(self, parent=None):
super(MyMainWindow, self).__init__(parent)
self.setupUi(self)
又开始了面向对象,这是一个继承,结构是这样的
from PyQt5.QtCore import QTime, QTimer
from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox
from MyGui import * #界面生成的python文件名
class MyMainWindow(QMainWindow, Ui_MainWindow): #界面生成的python文件中类名
def __init__(self, parent=None):
super(MyMainWindow, self).__init__(parent)
self.setupUi(self)
# self.MyGui里面的组件.设置文本(初始值)
# self.按钮名.clicked.connect(self.函数)
# def 函数(self):
# pass
if __name__ == '__main__':
app = QApplication(sys.argv)
MyWin = MyMainWindow() #新建一个窗口实例
MyWin.show() #显示窗口
MyWin.showMaximized()
sys.exit(app.exec_())
# 打印窗口大小
打包成exe文件
需要第三方库
pip install pyinstaller -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
执行这个命令
pyinstaller -F -w AA.py --key 123456
一定要在AA.py所在的文件夹的目录下打开命令提示符,不然系统会找不到AA.py,或者你输入AA.py的绝对路径(全路径)
-F就是onefile,只有一个exe文件,双击运行:简洁
相反:-D就是onedir,有一个文件夹,里面有很多文件,不建议
-w就是windowed,运行时不显示命令行窗口,已经做好GUI了,就不需要那个黑框框了。
原码和软件在这里key是密码的意思,这样不容易被反编译
>>>原码和软件<<<



