【Python】【PyQt5实战】【从零开始】 制作一个“一键生成”计算题的GUI程序【自适应全屏】

发布于:2022-08-07 ⋅ 阅读:(489) ⋅ 点赞:(0)

【Python】【PyQt5实战】【从零开始】 制作一个“一键生成”计算题的GUI程序【自适应全屏】

老规矩,先上效果图,题目:

在这里插入图片描述

往下滑答案:

在这里插入图片描述

施法前摇

第三方库准备

首先安装第三方库:

pip install pyqt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

注意三个点:

  1. 上述命令是临时换源(国内源),想一劳永逸,即直接运行pip install pyqt5即可安装的,建议观看视频:

pip配置国内源,速度快得飞起——wifi有多快下载有多快!

  1. 如果你使用的是Anaconda下的Python的话,那你就不得不将pip的安装路径改到Anaconda下,不然你import PyQt5就会报错,上个视频的后半段可以解决这个问题,当然如果你是天选之子,下面还有两个视频:

天选之子必看1,又双叒叕报错:No module named ‘PyQt’

天选之子必看2,又双叒叕报错:No module named ‘PyQt’

IDE配置

我的IDE是Pycharm,如图所示,为了方便起见,最好在IDE里面正确集成这些插件。
插件图
QtDesigner、PyUIC 集成到IDE:

  1. 点击文件(file)打开设置(setting)
    在这里插入图片描述
  2. 从上往下数,找到此选项,点击加号:
    在这里插入图片描述
  3. 好,现在我们来填表:
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,本文用不上,就不予赘述了。

  1. 看看成果
    在这里插入图片描述

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), 长, 宽)替换为与widthheight有关的参数,另外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 后查看

网站公告

今日签到

点亮在社区的每一天
去签到