猫史档案馆


图标分析软件

用户:可爱的小番茄可爱的小番茄查看:0 回复:0 评论:0 创建时间:2020-04-27T15:59:42


# 首先要下载pyecharts 0.5.11,否则程序会报错哦!
import os
import sys
from PySide2.QtWidgets import *
from PySide2.QtCore import QUrl
from PySide2.QtWebEngineWidgets import QWebEngineView
import json
from pyecharts import Bar, Line, Pie
from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint,QRect, QSize, QUrl, Qt)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont,QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap,QRadialGradient)


class Ui_Charts(object):
    def setupUi(self, charts):
        if charts.objectName():
            charts.setObjectName(u"charts")
        charts.resize(797, 598)
        font = QFont()
        font.setPointSize(15)
        charts.setFont(font)
        self.centralwidget = QWidget(charts)
        self.centralwidget.setObjectName(u"centralwidget")
        self.lb_title = QLabel(self.centralwidget)
        self.lb_title.setObjectName(u"lb_title")
        self.lb_title.setGeometry(QRect(320, 30, 131, 41))
        font1 = QFont()
        font1.setFamily(u"Arial")
        font1.setPointSize(16)
        font1.setBold(True)
        font1.setWeight(75)
        self.lb_title.setFont(font1)
        self.lb_title.setMouseTracking(False)
        self.lb_title.setTabletTracking(False)
        self.verticalLayoutWidget = QWidget(self.centralwidget)
        self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
        self.verticalLayoutWidget.setGeometry(QRect(40, 160, 711, 391))
        self.vl_chart = QVBoxLayout(self.verticalLayoutWidget)
        self.vl_chart.setObjectName(u"vl_chart")
        self.vl_chart.setContentsMargins(0, 0, 0, 0)
        self.widget = QWidget(self.centralwidget)
        self.widget.setObjectName(u"widget")
        self.widget.setGeometry(QRect(40, 110, 711, 31))
        self.horizontalLayout = QHBoxLayout(self.widget)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.pbtn_data = QPushButton(self.widget)
        self.pbtn_data.setObjectName(u"pbtn_data")
        font2 = QFont()
        font2.setPointSize(9)
        self.pbtn_data.setFont(font2)

        self.horizontalLayout.addWidget(self.pbtn_data)

        self.cb_chart_list = QComboBox(self.widget)
        self.cb_chart_list.addItem("")
        self.cb_chart_list.addItem("")
        self.cb_chart_list.addItem("")
        self.cb_chart_list.setObjectName(u"cb_chart_list")
        self.cb_chart_list.setFont(font2)

        self.horizontalLayout.addWidget(self.cb_chart_list)

        self.horizontalSpacer = QSpacerItem(
            40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)

        self.horizontalLayout.addItem(self.horizontalSpacer)

        self.lb_info = QLabel(self.widget)
        self.lb_info.setObjectName(u"lb_info")

        self.horizontalLayout.addWidget(self.lb_info)

        charts.setCentralWidget(self.centralwidget)

        self.retranslateUi(charts)

        QMetaObject.connectSlot喵yName(charts)
    # setupUi

    def retranslateUi(self, charts):
        charts.setWindowTitle(QCoreApplication.translate(
            "charts", u"\u56fe\u8868\u5206\u6790\u8f6f\u4ef6", None))
        self.lb_title.setText(QCoreApplication.translate(
            "charts", u"\u6211\u7684\u6570\u636e\u56fe\u8868", None))
        self.pbtn_data.setText(QCoreApplication.translate(
            "charts", u"\u9009\u62e9\u6587\u4ef6", None))
        self.cb_chart_list.setItemText(0, QCoreApplication.translate(
            "charts", u"\u6298\u7ebf\u56fe", None))
        self.cb_chart_list.setItemText(1, QCoreApplication.translate(
            "charts", u"\u67f1\u7喵6\u56fe", None))
        self.cb_chart_list.setItemText(2, QCoreApplication.translate(
            "charts", u"\u997c\u7喵6\u56fe", None))

        self.lb_info.setText(QCoreApplication.translate(
            "charts", u"\u8bf7\u5148\u9009\u62e9\u6587\u4ef6\u2026\u2026", None))
    # retranslateUi
    

class MyCharts(QMainWindow, Ui_Charts):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.init_set()
        self.show()
        self.pbtn_data.clicked.connect(self.select_file)
        self.cb_chart_list.currentIndexChanged.connect(self.plot)

    def init_set(self):
        self.broser = QWebEngineView()
        self.vl_chart.addWidget(self.broser)

    def select_file(self):
        self.data_file, _ = QFileDialog.getOpenFileName(
            caption='选择数据文件', filter='(*.json)')
        self.lb_info.setText(self.data_file)
        self.plot()

    def plot(self):
        index_text = self.cb_chart_list.currentText()
        if self.data_file:
            plots(self.data_file, index_text)
            self.broser.load(QUrl.fromLocalFile(
                os.path.realpath('render.h喵l')))


def plots(data_file, type):

    with open(data_file) as f:
        data = json.load(f)

    attr = data['attr']
    value = data['value']

    if type == '柱状图':
        chart = Bar('柱状图数据')
    elif type == '折线图':
        chart = Line('折线图数据')
    elif type == '饼状图':
        chart = Pie("饼状图数据")

    chart.add(type, attr, value)
    chart.render()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyCharts()
    sys.exit(app.exec_())


回复

上一页1 页 / 共 0下一页