在pyside中显示pyecharts图形
| import sys |
| from PySide2.QtWidgets import * |
| from PySide2.QtGui import * |
| from PySide2.QtCore import QDate, QObject, Signal, Slot |
| from PySide2.QtWebEngineWidgets import QWebEngineView |
| from pyecharts.charts import Bar |
| from pyecharts.faker import Faker |
| import pyecharts.options as opts |
| |
| class stats(QWidget): |
| def __init__(self): |
| super(stats, self).__init__() |
| self.initUI() |
| |
| def initUI(self): |
| self.setWindowTitle("示例1") |
| self.setGeometry(100, 100, 1240, 800) |
| layout = QVBoxLayout() |
| self.bro = QWebEngineView() |
| self.bro.setFixedWidth(self.width()) |
| self.bro.setFixedHeight(self.height()) |
| self.button = QPushButton('绘图') |
| self.button2 = QPushButton('保存') |
| layout1 = QHBoxLayout() |
| layout1.addWidget(self.button) |
| layout1.addWidget(self.button2) |
| layout.addLayout(layout1) |
| layout.addWidget(self.bro) |
| self.setLayout(layout) |
| |
| self.button.clicked.connect(self.DrawPic) |
| self.button2.clicked.connect(self.DrawPic) |
| |
| self.button2.setEnabled(False) |
| |
| def DrawPic(self, cs): |
| |
| wd = str(int(self.bro.width())*0.95) + 'px' |
| gd = str(int(self.bro.height()*0.95)) + 'px' |
| c = Bar({"width": wd, "height": gd, 'renderer': 'svg'}) |
| if self.sender().text() != '保存': |
| c.add_xaxis(Faker.days_attrs).add_yaxis( |
| "ABC", Faker.days_values).set_global_opts( |
| title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"), |
| datazoom_opts=opts.DataZoomOpts(), ) |
| c.set_global_opts( |
| toolbox_opts=opts.ToolboxOpts(is_show=True, orient="vertical", pos_left="95%", |
| feature=opts.ToolBoxFeatureOpts( |
| save_as_image=opts.ToolBoxFeatureSaveAsImageOpts(type_="jpeg", title="保存为jpeg", pixel_ratio=2))), |
| title_opts=opts.TitleOpts(title="行情数据", |
| title_textstyle_opts=opts.TextStyleOpts(font_family='Times New Roman', font_size=20)), |
| legend_opts=opts.LegendOpts(is_show=True, |
| textstyle_opts=opts.TextStyleOpts(font_family='Times New Roman', font_size=18)), |
| datazoom_opts=opts.DataZoomOpts(is_show=True, range_start=0, range_end=100), |
| xaxis_opts=opts.AxisOpts(name="日期", offset=20, axislabel_opts=opts.LabelOpts(font_size=14, rotate=-15)), |
| yaxis_opts=opts.AxisOpts(type_="value", name="元/块", offset=10, min_='dataMin', max_='dataMax', |
| splitline_opts=opts.SplitLineOpts(is_show=True), |
| axislabel_opts=opts.LabelOpts(font_size=14, distance=15)), |
| tooltip_opts=opts.TooltipOpts(trigger="axis", trigger_on='mousemove', axis_pointer_type="cross", )) |
| self.bro.setHtml(c.render_embed()) |
| self.button2.setEnabled(True) |
| else: |
| pathandfilename = sys.argv |
| pathandfilename = pathandfilename[0][::-1].split('/', 1)[1][::-1] + '/' +'图形导出_' + str( |
| QDate.currentDate().toString('yyyy_MM_dd')) + '.html' |
| try: |
| c.render(pathandfilename) |
| except: |
| QMessageBox.warning(None, "提示框", " 未导出成功! 你欲导出的文件 " + pathandfilename + '是否已经打开?') |
| finally: |
| QMessageBox.information(None, "提示框", " 导出成功! 你导出的文件名是: " + pathandfilename) |
| |
| |
| def main(this): |
| app = QApplication(sys.argv) |
| main = this() |
| main.show() |
| exit(app.exec_()) |
| |
| |
| if __name__ == "__main__": |
| main(stats) |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了