老规矩,先上效果图,题目:
往下滑答案:
施法前摇
第三方库准备
首先安装第三方库:
pip install pyqt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
注意三个点:
- 上述命令是临时换源(国内源),想一劳永逸,即直接运行
pip install pyqt5
即可安装的,建议观看视频:
- 如果你使用的是Anaconda下的Python的话,那你就不得不将pip的安装路径改到Anaconda下,不然你
import PyQt5
就会报错,上个视频的后半段可以解决这个问题,当然如果你是天选之子,下面还有两个视频:
IDE配置
我的IDE是Pycharm,如图所示,为了方便起见,最好在IDE里面正确集成这些插件。
将QtDesigner、PyUIC 集成到IDE:
- 点击文件(file)打开设置(setting)
- 从上往下数,找到此选项,点击加号:
- 好,现在我们来填表:
Q t D e s i g n e r QtDesigner QtDesigner | 内容 |
---|---|
名称 | QtDesigner |
描述 | QtDesigner.exe |
程序 | C:\ProgramData\Anaconda3\Library\bin\designer.exe 这是designer.exe的绝对路径,如果你找不到的话, 建议用Everything等快速查找工具,找到后复制全路径粘贴 |
实参 | 不填 |
工作目录 | $ProjectFileDir$ |
P y U I C PyUIC PyUIC | 内容 |
---|---|
名称 | PyUIC |
描述 | PyUIC.exe |
程序 | C:\ProgramData\Anaconda3\Scripts\pyuic5.exe 这是pyuic5.exe的绝对路径,如果你找不到的话, 建议用Everything等快速查找工具,找到后复制全路径粘贴 |
实参 | $FileName$ -o $FileNameWithoutExtension$.py |
工作目录 | $ProjectFileDir$ |
注:我这里还装了一个 P y R C C PyRCC PyRCC,本文用不上,就不予赘述了。
- 看看成果
UI设计
选
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是密码的意思,这样不容易被反编译
原码和软件在这里
本文含有隐藏内容,请 开通VIP 后查看