pyqt给js赋值,获取form表单值

酷我音乐接口逆向解析:从抓包到Python模拟请求的完整实践 网络爬虫技术是数据采集领域的基础,其核心原理在于模拟浏览器行为,通过分析HTTP请求与响应来获取目标数据。在Web开发与数据交互中,理解接口的调用方式、参数构造及加密机制具有重要技术价值,广泛应用于市场研究、竞品分析和自动化工具开发等场景。以音乐平台为例,通过抓包工具分析网络请求、逆向JavaScript加密逻辑,是掌握动态网页数据获取的关键。本文以酷我音乐为案例,详细拆解了其搜索与播放接口的请求过程,重点分析了包括**请求参数加密**和**Cookie会话管理**在内的核心机制,并提供了使用Python的 阅读详情

帮同事写客户端,发现pyqt和wxpython的api何其的多,资料又少,写一个包含各种表单的客户端对我来说难度很大,于是想到使用webkit来渲染html,pyqt自然成了我的选择。

但是发现,平时在web开发中,html向web后台获取数据或者提交数据这样简单的事,在pyqt中我完全不知道怎么办,资料又各种少。

最后找到了对应的简单例子,但是获取表单数据的那个例子在怎么都不起作用(google翻来覆去的查都只有那个例子),正在要放弃的时候,又突然能用了,感觉醉了。由于pyqt完全不懂,用它也只是为了写个东西出来,所以不打算深究,既然能用了,就这样吧。。


下面是整合了的代码:

import sys
from PyQt4 import QtCore, QtGui, QtWebKit
import json
from urllib import unquote_plus

class StupidClass(QtCore.QObject):

    def _pyVersion(self):
        return json.dumps(sys.version)

    pyVersion = QtCore.pyqtProperty(str, fget=_pyVersion)


class MyWebPage(QtWebKit.QWebPage):
    formSubmitted = QtCore.pyqtSignal(QtCore.QUrl)

    def acceptNavigationRequest(self, frame, req, nav_type):
        if nav_type == QtWebKit.QWebPage.NavigationTypeFormSubmitted:
            print 111
            self.formSubmitted.emit(req.url())
        return super(MyWebPage, self).acceptNavigationRequest(frame, req, nav_type)


def handleFormSubmitted(url):
        elements = {}
        for key, value in url.encodedQueryItems():
            key = unquote_plus(bytes(key)).decode('utf8')
            value = unquote_plus(bytes(value)).decode('utf8')
            elements[key] = value
        for item in elements.iteritems():
            print '"%s" = "%s"' % item

def main():
    app = QtGui.QApplication(sys.argv)

    myObj = StupidClass()

    browser= QtWebKit.QWebView()
    browser.setPage(MyWebPage())
    browser.page().mainFrame().addToJavaScriptWindowObject("pyObj", myObj)
    browser.page().formSubmitted.connect(handleFormSubmitted)
    browser.load(QtCore.QUrl("./StreamBlock.html"))

    window = QtGui.QMainWindow()
    window.setCentralWidget(browser)
    window.show()

    sys.exit(app.exec_())

if __name__ == "__main__":
    main()
StreamBlock.html内容:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link type="text/css" rel="stylesheet" href="./css/common.css">
    <script type="text/javascript" src="./js/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            $(".cmn_btn").click(function(){
                alert(pyObj.pyVersion);
            })
        })
    </script>
</head>
<body>
<div>
    <input type="button" class="cmn_btn" value="全选"/>
    <input type="button" class="cmn_btn" value="新建"/>
    <input type="button" class="cmn_btn" value="删除"/>
    <form action="" type="post">
        <input type="text" name="name"/>
        <input type="submit"/>
    </form>
</div>
<div>
<table
</div>
</body>
</html>


在这个例子里只能用page().load(),不能用page().setHtml()。form表单数据获取不到,没有深究,感兴趣的可以研究下。

可以看到,这个例子里面,python把数据传给了js,同时也能获取html form表单的数据。

心好累,不过终于能愉快的写html/css/js了。


续:最后时间有限,没时间研究web和pyqt交互,所以就直接启动了一个django,把它弄成守护进程,如果启动客户端的时候这个守护进程没有起来就手动起一下


本人出于个人兴趣,创建了一个个人公众号,每天筛选国外网友发现的有趣的事情推送到公众号,欢迎关注!


Tkinter是Python GUI入门的底层基石 GUI编程本质是事件驱动的状态映射,而非视觉呈现;其核心原理包括主事件循环、组件树结构与几何管理机制,这些概念贯穿所有主流框架。Tkinter作为Python标准库内置的轻量级GUI工具,以零依赖、跨平台、低内存和高启动性能著称,特别适合教学演示、内部工具开发及边缘设备部署。它强制开发者直面GUI底层模型,是理解PyQt、wxPython乃至Web前端响应式设计的思想源头。对于刚掌握基础语法、需快速交付稳定桌面应用或面向老旧硬件/离线环境的开发者而言,Tkinter不是过渡方案,而是不可替代的工程实践起点。 阅读详情

相关推荐

PyQt中的formLayout布局的layoutLabelAlignment属性

总结起来,PyQt中的formLayout布局提供了很多灵活的选项来创建表单界面。其中,layoutLabelAlignment属性用于设置表单标签的对齐方式,使界面更加美观和易读。然后,我们创建了两个QLabel对象和两个QLineEdit对象,分别用作表单的标签和输入控件。在PyQt中,formLayout是一种常用的布局管理器,用于创建表单式的用户界面。通过运行上述代码,我们将得到一个简单的表单界面,其中的标签将右对齐显示。最后,我们将该布局设置为对话框的主布局,并显示对话框。

WELL_CODER的博客 261

Python界面 可视化开发(python3+PyQt5+Qt Designer)

前言 以前制作一个Python窗体界面,我都是用GUI窗口视窗设计的模块Tkinter一点一点敲出来的,今天朋友问我有没有Python窗体的设计工具,“用鼠标拖拖”就能完成窗体设计,我查了查相关资料,果然有一款好用的工具——Qt Designer。 1.安装Qt Designer 这里需要安装两个东西:PyQt5和PyQt5-tools: 安装PyQt5:打...

清晨的光明 5万+

PyQt入门指南:QListWidget选中项获取对应行的方法(Python)

PyQt是一个强大的Python库,用于创建桌面应用程序的图形用户界面(GUI)。其中,QListWidget是一个常用的部件,用于显示项目列表,用户可以选择其中的项目。本文将详细介绍如何使用PyQt的QListWidget部件,以及如何获取选中项所对应的行号。PyQt是Qt库的Python绑定,它提供了创建GUI应用程序的工具和类。Qt是一个跨平台的C++库,用于开发桌面和移动应用程序。PyQt允许开发者使用Python语言来创建Qt应用程序,提供了丰富的GUI元素和功能。

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 1000

PyQT :实现自己的界面类

主要内容 通过继承实现自己的界面类; 涉及模块:QDialog, QLineEdit , QTextBrowser 界面布局:绝对布局,布局类   实例讲解 先看一段代码,我们定义了一个类Form,它继承自QDialog 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

ad_hoc_NW的博客 658

PyQt中的formLayout的layoutFormAlignment属性(Python)

在上面的代码中,我们创建了一个自定义的QWidget类MyForm,并在其initUI方法中设置了一个QFormLayout作为布局管理器。最后,我们通过setLayoutFormAlignment方法将表单布局的对齐方式设置为居中对齐。layoutFormAlignment属性定义了表单布局中的对齐方式。在PyQt中,formLayout的layoutFormAlignment属性允许我们自定义表单布局的对齐方式。通过设置不同的对齐标志,我们可以控制表单布局中的控件在水平和垂直方向上的对齐方式。

2301_79366435的博客 259

python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例

主要介绍了python GUI库图形界面开发之PyQt5布局控件QFormLayout详细使用方法与实例,需要的朋友可以参考下

078.PyQt5_QFormLayout_表单布局

078.PyQt5_QFormLayout_表单布局 管理输入控件及其关联标签的形式 它以两列的形式列出其子元素 左列由标签组成,右列由“字段”小部件(行编辑器、旋转框、步长调节器等)组成 左列是标签角色,右列是字段角色,同时占据两列的是跨越角色

weixin_50296259的博客 1387

Exchange 2013/2016/2019修改附件大小限制

Exchange 2013/2016/2019邮件大小限制 可以在三个位置上配置Exchange上的默认邮件大小限制: 组织传输设置 发送/接收连接器设置 用户邮箱设置 1.打开Exchange Management Shell 使用命令查看默认限制 get-transportconfig | ft maxsendsize, maxreceivesize get-receiveconnector | ft name, maxmessagesize get-sendconnector | ft

高级基础架构专家-Hunter 6098

python数据库管理界面_Python实例---基于页面的后台管理[简单版]

后台管理菜单 + 母板[css/content/js]向后台提交数据[2种]:1. 模态对话框(数据少操作,且Js复杂):form表单 :优点:简单,前端提交后后台处理完成后直接redirect;缺点:无法显示错误信息Ajax提交 :- 有错误,显示错误;无错误,通过js的 location.relad() 刷新页面- 有错误,显示错误;无错误,自己局部添加[Jquery的委托绑定 $('父集...

weixin_39992462的博客 486

从零构建XVC协议栈:FPGA+W5300的跨界调试架构实战

本文详细介绍了如何从零构建XVC协议栈,通过FPGA与W5300以太网控制器的创新组合实现跨界调试架构。重点解析了JTAG时序逆向、TCP/IP协议栈集成与XVC协议实现,提供了硬件设计优化和性能加速技术,为嵌入式开发者和FPGA工程师提供实用的远程调试解决方案。

raspberrypi5的博客 247

【Telephony】APN配置及加载流程&项目实践(AOSP)

学习APN关键是学会明白apns-conf.xml文件各个参数的意思,然后熟悉TelephonyProvider是如何读取文件创建数据库的,譬如数据库表的约束、文件的读写顺序等,还有读取后的ApnSetting的二次定制以及显示(例如屏蔽xcap等)。虽然一般在项目中APN的需求很简单,就是按照客户提供的APN参数添加上配置,或者在显示屏蔽一些参数,但是项目维护的过程中APN的问题也是比较多的。

weixin_44513784的博客 5507

Python+Selenium极简RPA入门:5分钟搭建自动化环境与实战技巧

机器人流程自动化(RPA)是一种通过软件机器人模拟人类操作,实现业务流程自动化的技术。其核心原理是识别用户界面元素并模拟键盘鼠标操作,从而替代重复性人工劳动。在技术选型上,Python凭借其简洁语法和丰富生态,成为快速实现自动化原型的首选语言;而Selenium作为成熟的Web自动化框架,提供了稳定可靠的浏览器控制能力。两者结合形成的轻量级RPA方案,特别适合快速验证自动化想法,降低学习与试错成本。典型的应用场景包括自动填写网页表单、定时数据抓取、报表生成等日常办公自动化任务。本文将以Python+Sele

weixin_34318326的博客 390

H265/HEVC视频分层码流分析语义元素解释

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对H265/HEVC视频码流进行详细分析。 二、H265分层结构 H265的分层结构与H264类似,分为视频编码层(VCL:Video Code Layer)和网络抽象层(NAL

weixin_43876729的博客 9431

Python从入门到实战:系统学习路径与四大核心应用模块详解

Python作为一门高级编程语言,以其简洁的语法和强大的生态,成为自动化脚本、Web开发和数据分析等领域的首选工具。其核心原理在于通过解释器执行代码,并借助丰富的第三方库(如Pandas、Flask)来扩展功能,从而显著提升开发效率。在技术价值上,Python降低了编程门槛,实现了快速原型开发和复杂数据处理。其应用场景广泛覆盖网络爬虫、数据可视化、后端服务构建乃至机器学习模型训练。本文以【网络爬虫】和【数据分析】为切入点,通过具体的代码示例,系统性地展示了如何从环境搭建、核心语法学习过渡到项目实战,为初学者

weixin_33978044的博客 356

linux基线检查、基线加固、安全漏扫、系统漏洞、centos7、文尾部附脚本

等保三级-CentOS Linux 7合规基线检查 风险分类:系统-等保三级-CentOS Linux 7合规基线检查 检测项说明: CentOS Linux 7合规基线检查,对标中国等保2.0第三级等级保护基本要求部分检查项目,仅供参考 检查项目 : 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 加固建议: 1、执行`cat /etc/shadow | awk -F: '($2 == "" ) { print $1}' `, 查看空密码账户并处理; 2、

swindy博客 5622

【干货分享】高通 SA8295P PCB 设计规范指南

高通SA8295P芯片是第四代骁龙汽车数字座舱平台的核心组件,采用5nm工艺,集成高性能CPU/GPU和30TOPS算力的NPU。文章详细介绍了该芯片各接口的layout设计规范,包括USB3.1/2.0、eDP/DP、MIPI CSI/DSI、PCIe Gen3等接口的阻抗、损耗、延时等关键指标要求,为新能源汽车电子设计提供重要参考。

一只豌豆象的博客 260

pyqt5 加载UI_form

pyqt5 加载UI_form

qq_33095999的博客 755

AI工具 | 每个打工人必备的15款人工智能超级工具

不过,还是有一些靠谱的人工智能平台,它们可不只是营销噱头。有些AI公司正试图改变游戏规则。人工智能工具让人们能够更聪明地工作,而不是更辛苦地劳作。如果你想知道未来有什么,那就来看看这10款人工智能工具吧,它们将彻底改变我们的工作方式。

Vampire_2017的博客 5万+

PyQt6 表单布局Form Layout (QFormLayout)

FormLayout控件表示表单布局,它的基类是QFormLayout,该控件以表单方式进行布局。 表单是一种网页中常见的与用户交互的方式,其主要由两列组成,第一列用来显示信息,给用户提示,而第二列需要用户进行输入或者选择

java1234的博客 1349

ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程

0 前言   网上关于ubuntu系统亮度无法调节的问题的解决方法有很多,但是绝大部分并没有什么用(这也是我自己的亲身体会),或者并不靠谱。在遍尝各路方法过后,我终于解决了这一棘手的问题(毕竟最大亮度真的非常刺眼,无法长时间直视),在此记录一下踩坑历程以及最后的解决方案。 1 Naive方法   由于使用需要,最近在电脑原有的win10基础上安装了ubuntu双系统。我安装的是当前新版的ubuntu20.04.2.0,靠谱的安装教程可以参考这里。   之前师兄说双ssd安装双系统会有系统启动引导的问题出现,

zeeq的博客 4万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PyQt5学习笔记--GridLayout、FormLayout和StackedLayout布局

3--StackedLayout布局。1--GridLayout布局。2--FormLayout布局。

牵一只蜗牛去散步 1480

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python pyqt5 From窗口内嵌子窗口

2.通过文件控件内的open控件导入文本内容在子窗口展示。3.通过文件控件内的close实现子窗口关闭。1.点击打开窗体实现子窗口内嵌主窗口展示。

cy19890616的博客 1077

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

PyQt5实现界面跳转

主界面: # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'Form.ui' # # Created by: PyQt5 UI code generator 5.10.1 # # WARNING! All changes made in this file will be lost! #要...

leechoy 4313

Python PyQt5l表单应用 - 自定义选择下拉框样式

如何调整默认选择下拉框的样式呢? 1.文件中引用类 QListView from PyQt5.QtWidgets import QListView 2.在控件中添加样式,示例 self.typeCmb.setObjectName("typeCmb") self.typeCmb.setStyleSheet( "#typeCmb{border:1px solid rgb(204,204,204);border-radius:3px;height:28px;}QAbstractItemView

ycn2008的专栏 1036

PyQt5布局之【QFormLayout——表单布局】

欢迎加入QQ群:853840665,一块学习讨论 QFormLayout管理输入型控件和关联的标签组成的那些Form表单。 QFormLayout表单布局,其中的控件以两列的形式被布局在表单中。左列包括标签,用作提示输入信息。右列包含输入控件,例如:QLineEdit、QSpinBox等,用于输入数据。再Android中做这种布局一般左侧是用Label,不得不说QT很牛,有这么方便的布局。 ...

亚洲程序员盟主得博客 1万+

Python中form的使用

文章目录form的主要作用:1.在model里创建一些数据类型2.在model.py同级目录下新建forms.py3.在view视图中 ,做表单验证4.在html页面,代码超简单,这点django做的不错 form的主要作用: 1.在html中生成表单框架,2.验证数据 https://www.cnblogs.com/zongfa/p/7709639.html 1.在model里创建一些数据类型 ...

weixin_45414731的博客 5675
上一篇: tornado和beego的helloworld性能对比
下一篇: python监听本地目录,并将目录下的文件同步到远端服务器
ECHOutopia
博客等级 码龄14年 11粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值