数据可视化 第5章

第5章 添加图表视图

我们使用QChartView来把数据图表化
1.追加chart_widget.py,窗口左侧显示表格数据,右侧准备显示图表

from PySide2.QtGui import QPainter
from PySide2.QtWidgets import (QWidget, QHeaderView, QHBoxLayout, QTableView, QSizePolicy)
from PySide2.QtCharts import QtCharts

from table_model import *

class Widget(QWidget):
    def __init__(self, data):
        QWidget.__init__(self)

        #获取model
        self.model = CustomTableModel(data)

        #创建QTableView
        self.table_view = QTableView()
        self.table_view.setModel(self.model)

        #QTableView 表头自适应以及拉伸
        self.horizontal_header = self.table_view.horizontalHeader()
        self.vertical_header = self.table_view.verticalHeader()
        self.horizontal_header.setSectionResizeMode(QHeaderView.ResizeToContents)
        self.vertical_header.setSectionResizeMode(QHeaderView.ResizeToContents)
        self.horizontal_header.setStretchLastSection(True)

        # 创建 QChart
        self.chart = QtCharts.QChart()
        # 设置全动画模式
        self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations)

        # 创建 QChartView
        self.chart_view = QtCharts.QChartView(self.chart)
        # 设置抗锯齿
        self.chart_view.setRenderHint(QPainter.Antialiasing)

        # 窗口布局
        self.main_layout = QHBoxLayout()
        size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)

        ## 左侧布局
        size.setHorizontalStretch(1)
        self.table_view.setSizePolicy(size)
        self.main_layout.addWidget(self.table_view)

        ## 右侧布局
        size.setHorizontalStretch(4)
        self.chart_view.setSizePolicy(size)
        self.main_layout.addWidget(self.chart_view)

        # 窗口添加布局
        self.setLayout(self.main_layout)

2.运行效果
5.png

posted @ 2021-11-01 14:54  踏月清风  阅读(8)  评论(0编辑  收藏  举报