UncleShuShuShu 2022-04-22 20:01 采纳率: 0%
浏览 87
已结题

webengine加载本地html无效,html又是通过js生成的动态地址,求解

问题遇到的现象和发生背景

实现诉求:将本地html文件通过webengine在软件上输出(软件指的是pyqt5-designer设计的页面,刚学的不知道怎么说勿喷)
平台MacOS 和win 双平台都试过,直接load(‘svgaPage.html’)本地文件均无效
不敢说全网,起码卡了3天,找了不下于1000个解答,还是没解决(可能有解决方案但是我看不懂,所以特地发帖麻烦大家了)

经测将本地的html用浏览器打开后,将浏览器中的地址复制上去后有效,能成功输出;证明源码没问题;但是实际情况是打包之后这个地址是动态的,就是尾部有?html=1x3jk这种的,随机生成的;所以没办法正确用。

本人猜测是webengine没有调用JS,但是由于初学者一枚,又不太敢肯定,无头苍蝇一样乱找了好久了。

问题相关代码,请勿粘贴截图

结构:都在根目录

【svgaPage.html】

<html>
        <script src="https://cdn.jsdelivr.net/npm/svgaplayerweb@2.3.1/build/svga.min.js"></script>
        <script src="//s1.yy.com/ued_web_static/lib/jszip/3.1.4/??jszip.min.js,jszip-utils.min.js" charset="utf-8"></script>
        <script src="./SVGAPlayer/build/svga.min.js">import SVGA from 'svgaplayerweb'</script>
        <div id="demoCanvas" style="width: 100%;height: 100%;background-color: chartreuse"></div>
        
        <script>
            var player = new SVGA.Player('#demoCanvas');
            var parser = new SVGA.Parser('#demoCanvas'); // 如果你需要支持 IE6+,那么必须把同样的选择器传给 Parser。
            parser.load('./fansCrad/fans.svga', function(videoItem) {
                //这里开始具体控制
                player.loops = 1;   //循环次数
                player.clearsAfterStop = true; //播放完是否清除内容
                player.setVideoItem(videoItem); //需要获取load返回参数才能生效(暂时不知道什么意思)
                player.startAnimation();        //开始播放
               // player.pauseAnimation();         暂停播放
               // player.stopAnimation();        停止播放
               // player.onFrame();   当前播放到第几帧,根据业务调整
            })
        </script>
        </html>

【main.py】

    def showSvga(self): 
        #http://localhost:63342/live_tools/svgaPage.html?_ijt=kt3p2cblbp8000nrtnfevsilmb&_ij_reload=RELOAD_ON_SAVE【这个链接直接放入QUrl的话是生效的,但是实际是动态的地址,我不能这样直接写进去】

        self.videoEngine.load(QUrl(r"./fansCrad/fans.svga"))  
        self.horizontalLayout.addWidget(self.videoEngine)   #将代码组件放入layout图层
        self.videoEngine.show()     #这个似乎要不要可以

运行结果及报错内容

layout图层会从透明变白,说明应该是参数过去;但是网页内容一点也不显示;无报错内容

我的解答思路和尝试过的方法

因为直接讲浏览器地址复制到url是可以打开的,所以基本上可以说代码没啥问题;应该就出在这个动态地址上。

我想要达到的结果

我了解到一种方式好像叫什么反向编译?这个意思是不是将js内容生成的地址反向的形成一种代码状态可以用于QURL?没太看懂。

我目前能想到的解决思路有2个;
1、使用服务器,这样地址就有了(但是真的没必要呀;只是一个小程序;而且这也不是解决问题的根本;本地还是没有实现)
2、在main代码中直接写js??我也不知道这个能不能实现;看了很多零碎的代码都是不完整的;所以很难看懂。

如果有朋友能协助一下,期望可以尽可能的完整点解答和通俗一点哈(手动比心);对了,我用的是python3 页面是qt-designer设计的

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 4月30日
    • 赞助了问题酬金20元 4月24日
    • 创建了问题 4月22日

    悬赏问题

    • ¥15 有偿求苍穹外卖环境配置
    • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
    • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
    • ¥15 clousx6整点报时指令怎么写
    • ¥30 远程帮我安装软件及库文件
    • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
    • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
    • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
    • ¥15 Android studio 无法定位adb是什么问题?
    • ¥15 C#连接不上服务器,