前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pyecharts 嵌入 PyQt5

pyecharts 嵌入 PyQt5

作者头像
用户6021899
发布2020-08-13 11:30:18
3.6K0
发布2020-08-13 11:30:18
举报

之前介绍过用pyecharts显示地图。下面先生成显示中国各省人口地图的网页。

from pyecharts import options as opts
from pyecharts.charts import Map, Page
from pyecharts.faker import Collector, Faker

def readData(path):
    populations = list()
    with open(path,"rt",encoding="utf8") as f:#读取中文文本文件
        line = f.readline()
        while line:
            a = line[:-1].split("\t")
            populations.append([a[0],int(a[1])])
            line = f.readline()
    return populations

C = Collector()
@C.funcs
def map_visualmap() -> Map:
    c = (
        Map()
        .add("中华人民共和国各省人口数(第6次人口普查)", populations, "china")
        .set_global_opts(
            title_opts=opts.TitleOpts(title="pyecharts 嵌入 PyQt5 DEMO"),
            visualmap_opts=opts.VisualMapOpts(max_=max_),
        )
    )
    return c
populations = readData("人口.txt")#从国家统计局官网下载
max_ = max(x[1] for x in populations)
Page().add(*[fn() for fn, _ in C.charts]).render("ChinaPopulationMap.html")

使用PyQt5的浏览器引擎控件即可加载网页到GUI界面中,效果如下:

源码:

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication,QWidget,QHBoxLayout,QFrame
from PyQt5.QtWebEngineWidgets import QWebEngineView
import sys
 
class UI(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.mainLayout()
 
    def initUI(self):
        self.setWindowTitle("中国各省人口")
    def mainLayout(self):
        self.mainhboxLayout = QHBoxLayout(self)
        self.frame = QFrame(self)
        self.mainhboxLayout.addWidget(self.frame)
        self.hboxLayout = QHBoxLayout(self.frame)
        
        #网页嵌入PyQt5
        self.myHtml = QWebEngineView()##浏览器引擎控件
        #url = "http://www.baidu.com"
        #打开本地html文件#使用绝对地址定位,在地址前面加上 file:/// ,将地址的 \ 改为/
        self.myHtml.load(QUrl("file:///E:/Python36/MyPythonFiles/pyecharts/ChinaPopulationMap.html"))
        
        self.hboxLayout.addWidget(self.myHtml)
        self.setLayout(self.mainhboxLayout)
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = UI()
    ex.show()
    sys.exit(app.exec_())
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档