pyqt之QNetworkAccessManager

2024-04-18 21:12

本文主要是介绍pyqt之QNetworkAccessManager,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QNetworkAccessManager是Qt自带的一个网络请求库,网上很多说的很模糊,在这总结一下

# coding: utf-8
import json
import sys
from pathlib import Path
from typing import Union
from urllib.parse import urlencodefrom PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager, QNetworkReply, QHttpMultiPart, QHttpPart
from PyQt5.QtCore import QUrl, pyqtSignal, QByteArray, QJsonDocument, QCoreApplication, QObject, QFile, QIODeviceclass NetworkRequestsManager(QObject):finished = pyqtSignal(QNetworkReply)def __init__(self, parent=None, *, encoding='utf-8'):super().__init__(parent)self._reply = None  # type: QNetworkReplyself._encoding = encodingself.networkAccessManager = QNetworkAccessManager(parent)self.networkAccessManager.finished.connect(self.finished)def get(self, url: Union[str, QUrl], params=None, headers=None):request = QNetworkRequest(self.__initUrl(url, params))self.__initHeaders(request, headers)self.networkAccessManager.get(request)def post(self, url: Union[str, QUrl], params: dict = None, json: dict = None, headers: dict = None):request = QNetworkRequest(self.__initUrl(url, params))self.__initHeaders(request, headers)self.networkAccessManager.post(request, self.__initJson(json))def file_post(self, url: Union[str, QUrl], file: dict, headers: dict = None):request = QNetworkRequest(self.__initUrl(url, params))multiPart = QHttpMultiPart(QHttpMultiPart.FormDataType)for item in file.items():httpPart = QHttpPart()file = QFile(item[1])file.open(QIODevice.ReadOnly)httpPart.setHeader(QNetworkRequest.ContentDispositionHeader,f'form-data; name="{item[0]}"; filename="{Path(item[1]).name}"')httpPart.setBodyDevice(file)file.setParent(multiPart)multiPart.append(httpPart)self.__initHeaders(request, headers)self.networkAccessManager.post(request, multiPart)def __initUrl(self, url: Union[str, QUrl], params: dict = None) -> QUrl:if isinstance(url, str):url = QUrl(url)url.setQuery(urlencode(params), QUrl.ParsingMode.TolerantMode)return urldef __initHeaders(self, request: QNetworkRequest, headers: dict = None):if headers is None:returnfor item in headers.items():request.setRawHeader(item[0].encode(), item[1].encode())def __initJson(self, json: dict = None):if json is None:returnreturn QJsonDocument(json).toJson()if __name__ == '__main__':# 这是一个联想壁纸的接口app = QCoreApplication(sys.argv)manager = NetworkRequestsManager()params = {"skip": "0","limit": "54","count": "76873","tagId": "-1","colorId": "-1","classId": "-1","refresh": "true","priceId": "0"}url = 'https://pc-store.lenovomm.cn/wallpapercontent/wallpaper/class_wallpaper_list'headers = {"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzbWJPcHRpb25zIjoiMSIsImJ1c2luZXNzS2V5IjoiIiwiY2hhbm5lbCI6IjIwMDA1IiwiZnJvbSI6ImluZHN0b3JlIiwidmVyc2lvbk5hbWUiOiI5LjAuMTMzMC4yMDEiLCJleHAiOjIzNDI4NjY3NzEsInZlcnNpb25Db2RlIjoiOS4wLjEzMzAuMjAxIn0.2_R46WPaT2BCy_NcbewdfosiSlLEMdNRX9cJIoqb6eY","user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36&PCStore"}manager.get(QUrl(url), params, headers=headers)def response(reply: QNetworkReply):if reply.error() == reply.NoError:print(json.loads(reply.readAll().data().decode('utf-8')))else:print(reply.errorString())manager.finished.connect(response)sys.exit(app.exec_())

这篇关于pyqt之QNetworkAccessManager的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915841

相关文章

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

使用PyQt实现简易文本编辑器

《使用PyQt实现简易文本编辑器》这篇文章主要为大家详细介绍了如何使用PyQt5框架构建一个简单的文本编辑器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录分析主窗口类 (MyWindow)菜单操作语法高亮 (SyntaxHighlighter)运行程序主要组件代码图示分析实现

Python知识点:如何使用Python开发桌面应用(Tkinter、PyQt)

Python 提供了多个库来开发桌面应用程序,其中最常见的两个是 Tkinter 和 PyQt。这两者各有优点,选择取决于你的需求。以下我会介绍如何使用 Tkinter 和 PyQt 开发简单的桌面应用程序。 1. 使用 Tkinter 开发桌面应用 Tkinter 是 Python 的标准库,它非常轻量级且跨平台。它适合开发简单的桌面应用,入门较容易。 安装 Tkinter Tkinte

改进YOLO的群养猪行为识别算法研究及部署(小程序-网站平台-pyqt)

概述 群养猪的运动信息和行为信息与其健康状况息息相关,但人工巡视费时费力,本实验提出采用行为识别算法于群养猪的养殖管理中,识别群养猪drink(饮水)、stand(站立)和lie(躺卧)行为,为自动化养殖提供基础。本项目最终以三种不同的形式进行部署,分别为: 网站平台微信小程序PyQt应用程序 实验流程 下图是基于改进YOLOv5s的群养猪行为识别模型建立流程,可概括为以下几个阶段:数

快速构建一个ui界面程序--pyqt入门

快速构建一个ui界面程序--pyqt入门 0 背景1 环境准备1.1 安装python1.2 安装pyqt 2 UI设计2.1 启动UI设计可视化工具2.2 生成*.ui文件2.3 编译ui生成对应的py 3 使用UI 0 背景 本文档用于记录开发者如何快速构建一个简单UI程序。开发者使用文档中提及的工具并用于商业活动时,请注意对应工具的使用协议。 本文介绍如何使用pyqt快速

python pyqt statusBar 完整的操作方法详细说明和代码举例

在PyQt中,QStatusBar 是一个用于显示状态信息的组件,通常位于主窗口的底部。它提供了一个简单的方式来显示应用程序的状态信息,比如当前操作的进度、错误信息等。 以下是使用 QStatusBar 的详细步骤和代码示例: 步骤 1: 导入必要的模块 首先,需要导入 QStatusBar 和 QMainWindow。 from PyQt5.QtWidgets import QMainW

PyQt的安装和使用案例

1.安装Python3.4的Windows版本 下载地址:https://www.python.org/downloads/ 下载之后直接安装 2.安装PyQt4的windows版本 下载地址:http://www.riverbankcomputing.co.uk/software/pyqt/download/ 注意PyQt的版本需要和Python的版本对应,PyQt4-4.11.4-g

PyQt创建VTK

1.定义和调用全局函数来创建VTK图形 import sysimport vtkfrom PyQt4 import QtCore, QtGuifrom vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractorclass MainWindow(QtGui.QMainWindow):def __init__

【PyQt5 应用程序】PyQt基础组件:树形视图

在探索Python和PyQt制作应用程序的旅程中,树形视图是一个非常强大且常用的组件,尤其是在需要显示层次化数据时。 本节将详细介绍PyQt中树形视图(QTreeView)的使用方法,从基本概念到参数应用举例,希望能帮助你更好地掌握这一组件。 文章目录 树形视图基础自定义项和层次示例应用:任务管理器总结 树形视图基础 树形视图是一种用于展示层次结构数据的图形界面组件,允许用户

【PyQt5 应用程序】PyQt基础组件:窗口

在任何图形用户界面(GUI)应用程序中,窗口是最基本的组成部分。它为其他GUI元素(如按钮、文本框等)提供了容器。在PyQt中,创建和管理窗口非常简单,但强大的功能让你能够轻松定制和优化用户界面。本节将引导你了解如何使用PyQt创建、显示和操作窗口。 创建窗口 在PyQt中 QWidget类是所有用户界面对象的基类。要创建一个简单的窗口,你可以实例化QWidget类或任何从QWidget派生的