前言

继前文Python在PyQt5中使用ECharts绘制图表中在Python程序中添加网页展示ECharts图表,和Python使用QWebEngineView时报错Uncaught ReferenceError的解决中解决页面加载过慢的问题之后,又遇到了新的问题,那就是QWebEngineView加载的页面右键会有一个reload功能,即重新加载页面,重新加载后问题就出现了,它加载的是原网页,需要通过runJavaScript重新修改option里的内容,这不够理想。于是采取新的策略,将原来写的HTML当做模板,获取数据后根据模板并将数据写入生成新的HTML文件,再加载到QWebEngineView里,这样随便怎么刷新都不会没有数据,顶多是先前的视角缩放什么的会重置,但无伤大雅。

简介

Jinja是Python下一个广泛应用的、快速、富有表现力、可扩展的模板引擎,设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。

使用

  1. 新建一个临时文件夹存放生成的生成的HTML
import osif not os.path.exists("temp"):os.mkdir("temp")

Python有专门生成临时文件夹或文件的库,叫tempfile,但由于HTML里导入文件的路径问题放弃使用了,如:

import tempfiletemp_folder = tempfile.mkdtemp()
file_name = "file_name.html"
with open(os.path.join(temp_folder, file_name), "w") as file_out:pass
  1. 修改HTML文件为模板
    仍然以最初文章中雷达图为例,将需要替换的内容用{{ }}标识出:
    这里就摘出关键部分
<script type="text/javascript">let option = {radar: {shape: 'circle',indicator: [{ name: 'A', max: 100},{ name: 'B', max: 100},{ name: 'C', max: 100},{ name: 'D', max: 100}]},series: [{type: 'radar',data: [{// value: [0, 0, 0, 0],value: {{ temp_value }}  // 价格需要替换的内容以{{变量名}}来表示areaColor: "rgba(151,181,215,0.6)",areaStyle: "color",label: {show: true,formatter: function (params) {// 可自定义显示内容return params.value}}}]}]};
</script>

除此之外还有个很重要的地方,就是HTML导入echarts.js的路径也要注意,因为上面临时文件夹是新创建的空文件夹,里面没有也不应该有别的文件,所以echarts.js不会和生成的HTML文件在一起,也就是这里导入的路径需要修改为echarts.js的实际路径,仍然是通过模板来替换。

<script src="{{ temp_echarts }}"></script>
  1. 载入模板
import Environment, FileSystemLoadertemp_path = os,path.join(os.path.dirname(os.path.abspath(__file__)), "templates")  // 获取根目录并拼接,更可靠
env = Environment(loader=FileSystemLoader("templates")
template = env.get_template("template_echarts_radar.html")
  1. 获取数据,略
  2. 写入数据,生成文件并载入
file_path = "temp/radar.html"
with open(file_path, "w", encoding="utf-8") as file_out:html_content = template.render(temp_echarts = "../***/echarts.js",temp_value = [1, 2, 3, 4])file_out.write(html_content)# 加载,格式不能忘
radar_view.load(QUrl("file:///" + file_path)

——终——

【jinja2】Python根据模板生成HTML文件并加载进QWebEngineView相关推荐

  1. python根据模板生成pdf文件_使用Python生成pdf文件

    Python平台的优秀PDF报表类库Reportlab.它不属于Python的标准类库,所以必须手动下载类库包并安装: yum install python-reportlab -y 这篇文章将介绍r ...

  2. itextword加公章 java_使用itext和freemarker来根据Html模板生成PDF文件,加水印、印章...

    org.xhtmlrenderer flying-saucer-pdf-itext5 9.1.18 org.freemarker freemarker 2.3.27-incubating 将html模 ...

  3. python根据模板生成pdf文件_程序生成word与PDF文档的方法(python)

    程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用free ...

  4. python根据模板生成pdf文件_如何使用ReportLab从各种页面模板生成PDF?

    我有JSON文件和大量数据和四个PDF模板的页面.我需要用所有这些数据和页面模板生成一个PDF文件.现在我的代码如下:self.line(self.data['sendr'], 10, 250, 25 ...

  5. 利用Python根据模板生成Word文档

    文章目录 背景 EXCEL的用例 Word内容 Python处理 读取excel的内容 将同模块的用例保存到同一个对象 采用DocxTemplate根据模板生成word文件 生成结果如下 全部代码如下 ...

  6. python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;

    python使用fpdf生成pdf文件章节(chapter),包含:页眉.页脚.章节主题.数据排版等: #仿真数据 The year 1866 was marked by a bizarre deve ...

  7. python使用fpdf生成pdf文件:配置多种语言字体写入多种文字

    python使用fpdf生成pdf文件:配置多种语言字体写入多种文字 目录

  8. JAVA 根据模板生成doc文件

    JAVA 根据模板生成doc文件 需求 根据模板生成对应的doc文档,文档内容动态填充. 实现 1.将doc模板转换为ftl文件,放入项目中 1.1 首先将模板另存为xml文件 1.2 更改xml文件 ...

  9. java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件

    Java 使用pdf 模板生成pdf文件 --制作流程 1.      使用工具 adobe acrobat dc.word 2015 2.      使用 word 繪制一個 3*5 的表格並保存, ...

最新文章

  1. C++ - emplace_back 和 push_back 的区别
  2. Linux中的文件寻址,Linux文件寻址算法:逻辑地址到物理地址的转换
  3. Tab Bar Animation
  4. 修改Linux中的用户名
  5. python怎么处理数据集的缺失值_python 对数据集的缺失值补全方法 sklearn.preprocessing.Imputer...
  6. OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)【转】
  7. win11亮度调节不见了怎么办 windows亮度调节不见了的解决方法
  8. linux 系统添加字体,linux服务器下添加字体
  9. 好物分享 Kvaser支持CANFD功能的CAN卡都有哪些?
  10. 图片干扰背景处理,简单易懂
  11. oracle公司的crm有哪些主要模块,Oracle CRM 的组成及各模块的功能
  12. c语言中strlen什么作用,strlen函数在c语言中的用法是什么
  13. 怎样用计算机中的画笔,Word2010中怎样用画笔绘制表格
  14. PHY--PUSCH
  15. mac 苹果电脑升级系统后蓝牙耳机只有一边有声音 苹果电脑连接耳机音质不好 苹果电脑浏览网页音视频嘈杂
  16. 如何刷PTA,达到PTA甲级、乙级、顶级应具备的能力
  17. python 安装 SimpleITK 和 pydicom
  18. PAT甲组1151 LCA in a Binary Tree思路解析和代码
  19. 高压配电线路中过电流保护和速断保护的整定值计算公式
  20. 可以不学c语言直接学python_为什么你觉得C语言什么都不能做,学了没用?不可能的...

热门文章

  1. OpenGL三维空间中视距与屏幕像素换算公式
  2. 谷歌pixel系列刷机注意的问题不然变砖
  3. 收银管理软件优化实体店三大模块?
  4. 北京积分落户人员特点分析
  5. Django电商项目(十二)实现QQ登录
  6. Docker - 清理Docker占用的磁盘空间
  7. 手机端页面可以左右轻微拖动的bug
  8. 一级缓存和二级缓存的理解
  9. 讯飞房屋租赁比赛开源
  10. ci mysql 事务_mysql建库语句及innodb事务分析