如何用Python将HTTP接口封装成可视化页面。

news/2024/9/19 15:19:12/文章来源:https://www.cnblogs.com/xiaodi888/p/18420600

       在软件行业中,经常会遇到有一些功能只能通过接口触发,没有页面。这样很不方便,。

我们这里,就是通过PyQt5实现,将接口的入参,封装成一个可视化的表单。将用户在表单中填写的数据,传给接口,接口再带参请求业务

 

1.先看最终的效果,用户打开桌面应用后,只会出现下面的弹窗,

 接口代码等,无感

 

 

 

2.接下来就是详细步骤:


步骤 1: 安装必要的库
首先,确保你的Python环境已经安装。然后,你需要安装PyQt5。你可以通过pip安装它:

pip install PyQt5
PS:PyQt5是一个用于创建图形用户界面(GUI)的Python库。我们需要PyQt5来创建可视化页面。

步骤 2: 编写代码
接下来,我们将编写Python代码来创建一个窗口,该窗口包含一个表单提交页面,用户点击“”确定“按钮时,将输入的姓名和电话,传给添加地址接口的body使用。

#本代码是通过PyQt5库实现前后端交互,在本地电脑打开一个提交表单的窗口,然后把表单数据传参给接口
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QLabel, QMessageBox
import sys
import requests
import jsonpathclass TestApi:Token1 = ""addname = ""addPnonenumber = ""#1登录接口def test_login1_api(self):url = "https://www.xxxxxxxx.com/web/api/user/login/v2"headers = {"Content-Type":"application/x-www-form-urlencoded"}datas = {"username":"admin","password":"12345678","verify":"","openId":"","unionId":"","rebind":"0"}res = requests.post(url,headers=headers,data=datas)result = res.json()print("登录接口响应报文",res.text)assert '登录成功' in res.textvalue = jsonpath.jsonpath(result,"$.data.token")TestApi.Token1 = value[0]#2添加地址接口def test_addAddress_api(self):if not self.addname or not self.addPnonenumber:print("错误:姓名或电话号码未设置。")returnurl = "https://www.xxxxxxxx.com/web/api/member/editAddress"headers = {"Content-Type":"application/x-www-form-urlencoded","Authorization": TestApi.Token1}datas = {"id":"0","name":self.addname,"phone":self.addPnonenumber,"address":"广东省湛江市雷州市乌石镇","cityId":"440882","cityName":"广东省湛江市雷州市","streetName":"乌石镇","latitude":"20.556195","longitude":"109.856828","isDefault":"false"}print("Sending data:", datas)res = requests.post(url,headers=headers,data=datas)print("添加地址接口响应报文",res.text)assert '成功' in res.textdef run_all_apis(self, main_window):success = Truetry:self.test_login1_api()self.test_addAddress_api()except AssertionError as e:success = Falseprint(e)if success:main_window.show_message("所有接口调用成功!")else:main_window.show_message("有异常,请检查代码")class MainWindow(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('地址信息输入')self.setGeometry(100, 100, 300, 150)layout = QVBoxLayout()self.nameLabel = QLabel('姓名:', self)self.nameInput = QLineEdit(self)layout.addWidget(self.nameLabel)layout.addWidget(self.nameInput)self.phoneLabel = QLabel('电话:', self)self.phoneInput = QLineEdit(self)layout.addWidget(self.phoneLabel)layout.addWidget(self.phoneInput)self.submitButton = QPushButton('确定', self)self.submitButton.clicked.connect(self.submit_info)layout.addWidget(self.submitButton)self.setLayout(layout)self.api_tester = TestApi()def submit_info(self):self.api_tester.addname = self.nameInput.text().strip()  # 使用strip()去除可能的空白字符
self.api_tester.addPnonenumber = self.phoneInput.text().strip()if not self.api_tester.addname or not self.api_tester.addPnonenumber:QMessageBox.warning(self, "输入错误", "请填写完整的姓名和电话号码!")returnself.api_tester.run_all_apis(self)def show_message(self, message):QMessageBox.information(self, "结果", message)  # 使用self作为窗口对象if __name__ == '__main__':app = QApplication(sys.argv)ex = MainWindow()ex.show()sys.exit(app.exec_())

 

 



步骤 3: 运行程序
保存你的Python文件(例如countdown.py),然后在CMD命令行中运行它:或者直接在pycharm脚本调试运行,也是可以的。

cd C:\Program Files\python3.12\pythonProject
python countdown.py


       你应该会看到一个简单的窗口,上面显示着姓名和电话的输入框,以及一个确定按钮。此时,其实已经实现了接口可视化功能。但是唯一缺点是,目前还需要依赖Python环境,所以如有需要,接下来我们将开始,把以上代码,打包成一个可执行的应用程序,即.exe文件,直接运行即可,不再依赖环境。

 

       要使PyQt5应用程序在任何电脑上运行而无需安装Python环境,可以使用一些工具来将Python代码、必要的库以及一个Python解释器一起打包成一个可执行文件(.exe)。
以下是方法:

步骤 1:

PyInstaller 是一个很好的选择,因为它支持多种平台(Windows、Linux、MacOS)并且相对容易使用。你需要确认 PyInstaller 是否已经安装在你的系统上,并且需要添加pyinstaller安装目录的环境变量。你可以通过 Python 的包管理工具 pip 来检查,

pip show pyinstaller
# 或者,如果你使用的是 Python 3,可能需要使用
pip3 show pyinstaller如果这个命令返回了 PyInstaller 的信息,那么它已经被安装了。如果没有返回任何信息,那么可以通过 pip 来安装它:pip install pyinstaller
# 或者,对于 Python 3
pip3 install pyinstaller

 



步骤 2:打包您的应用程序
在包含您的Python脚本(例如SpringFestivalCountdown.py)的目录中,打开cmd命令行或终端,并运行以下命令来打包您的应用程序:

pyinstaller --onefile --windowed SpringFestivalCountdown.py--onefile 选项指示PyInstaller将所有内容打包到一个单独的可执行文件中。
--windowed 或 --noconsole 选项对于GUI应用程序很有用,因为它会隐藏命令行窗口(如果您的应用程序是基于控制台的,则不需要此选项)。#方案二:如以上方法不行,注意,可能需要管理员权限运行。先管理员打开cmd,然后cd到py文件路径,使用命令pyinstaller -F name.py#方案三,由于部分电脑的python、pip、pyinstaller等安装环境的问题,导致pyinstaller命令不能被识别,或者如果你不想修改 PATH 环境变量,只是想快速测试 PyInstaller 是否可用,你可以使用 Python 的完整路径来调用 pip 安装的脚本。例如,在 Windows 上,你可以这样做,将PyInstaller文件和脚本文件路径写死:"C:\Program Files\python3.12\pythonProject\.venv\Scripts\pyinstaller.exe" --onefile --windowed "C:\Program Files\python3.12\pythonProject\XX_name.py"

 

步骤 3:查找可执行文件
        打包完成后,您会在dist目录下找到名为SpringFestivalCountdown.exe(在Windows上)的可执行文件。您可以将其复制到任何Windows电脑上运行,而无需安装Python。具体文件位置,在cmd输出时,可以显示出来。
   一般情况下保存程序的路径都是这样的:C:\Program Files\python3.12\pythonProject\dist,在这个文件夹去运行程序就可以了。

 

 

本文只是给具体的思路起个头,还有很多不完善的,希望各位大佬可以一起参与建设。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799895.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易优eyoucms网站php5.4版本,报错:Cant use method return value in write context

当你在使用 PHP 5.4 版本时遇到 “Cant use method return value in write context” 的错误,这通常是因为你在代码中错误地使用了方法返回值。这种错误通常发生在试图将方法返回值直接赋值给变量或用于其他上下文时。 解决方案 以下是一些常见的原因和解决方法: 1. 检查代码…

易优eyoucms网站报错 /core/library/think/db/Connection.php 第 389 行左右,如何解决?

SQLSTATE[42S22]: Column not found: 1054 Unknown column groupid in where clause 遇到“SQLSTATE[42S22]: Column not found: 1054 Unknown column groupid in where clause”这类错误,通常是因为数据库表结构与代码中的查询不匹配。具体来说,可能是数据库表中缺少某个列(…

【HFSS】HFSS绘制梯形走线的5种方法

使用HFSS仿真PCB走线,需要对走线进行建模,但是由于PCB制造过程中的蚀刻导致走线截面不是理想的矩形,而是接近梯形。为了使仿真尽量精确,需要将PCB走线截面绘制成梯形。下面介绍几种绘制梯形走线的方法。 方法一:修改line参数直接生成梯形 1)画一条线100mil,右侧窗口选中…

汇总区间

给定一个有序的list, 需要根据数据的连续性进行区间的汇总实例如下: 解决方法:设置左右指针,固定左指针,当右指针对应的数+1=右指针+1对应的数 and 右指针不要越界,就移动右指针,直到跳出while,并更新左指针=右指针+1class Solution(object):def summaryRanges(self, n…

element-plus 如何修改el-table 滚动条高度,el-table滚动条放置在表格外面

element-plus el-table 滚动条高度, el-scrollbar,滚动条放置在表格外面,滚动条放置在表格外部先上效果图: 实现方式,自定义全局的element样式如下:/** * 表格滚动条 */// 横向滚动条高度 $scrollbarheight: 15px; .el-scrollbar {//偏移.el-scrollbar__bar{bottom: 1p…

MindSearch 快速部署

基础任务(完成此任务即完成闯关)按照教程,将 MindSearch 部署到 HuggingFace 并美化 Gradio 的界面,并提供截图和 Hugging Face 的Space的链接。MindSearch 部署到Github Codespace 和 Hugging Face Space 和原有的CPU版本相比区别是把internstudio换成了github codespace。…

小程序隐私合规自查指南

一 背景:小程序作为一种轻量级应用,广泛应用于各大互联网平台。工信部通报2022年第5批侵害用户权益名单中首次出现8款违规小程序。各监管单位对“小程序”违规收集个人信息监控手段和监控力度不断加强。 工信部APP违法违规通报 上海市委网信办查处违规小程序二、小程序隐私合…

Jmeter的简单使用一:http请求

1、创建线程组setUp和tearDown线程组类似测试用例的测试开始之前执行某些初始化操作,如环境准备、数据库连接和释放数据库连接2、设置线程组Ramp-Up时间(以秒为单位)是指从开始到所有线程都达到活动状态的时间。例如,如果你设置了10个线程,并且Ramp-Up时间为20秒,那么JMe…

Flags

Flags是位字段的序列,当其中任何一个位不为零且广播可连接时广播包中应包含flags. 否则,flags可以被忽略。flags只能包含在广播包中,扫描响应包中不能包含flags。flags的作用是在广播包中加入如下标志:有限可发现模式;一般可发现模式;不支持BR/EDR;设备同时支持LE和BR/E…

Oracle 19c OCP 认证考试 082 题库(第23题)- 2024年修正版

【优技教育】Oracle 19c OCP 082题库(Q 23题)- 2024年修正版 考试科目:1Z0-082 考试题量:90 通过分数:60% 考试时间:150min 本文为(CUUG 原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。 原文地址:http://www.cuug.com/index.php?s=/home/article/deta…

windows7遇到不兼容如何解决

概述: 低版本的Windows缺乏一些高版本中所新增的系统接口,而VxKex可以为程序提供这些缺失的接口从而使其正常运行 当然VxKex不仅可以用于lucky也可以使其他一些最低要求为win10的程序在win7上运行起来 详情见其github项目地址 不过目前对游戏的效果不佳 国内加速下载下载:http…

一文搞定WeakHashMapE0

写在前面 在缓存场景下,由于内存是有限的,不能缓存所有对象,因此就需要一定的删除机制,淘汰掉一些对象。这个时候可能很快就想到了各种Cache数据过期策略,目前也有一些优秀的包提供了功能丰富的Cache,比如Google的Guava Cache,它支持数据定期过期、LRU、LFU等策略,但它…