使用TableView呈现数据,使用QChartView显示图表。
效果
import sys
from PySide6 import QtCore,QtGui,QtWidgets,QtCharts
import random
class MainWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
#创建表格模型
self.model=QtGui.QStandardItemModel()
self.tableview = QtWidgets.QTableView()
#随机填充数据到模型(y=2*x+randint)
for i in range(20):
self.model.setItem(i,0,QtGui.QStandardItem(str(i)))
self.model.setItem(i,1,QtGui.QStandardItem(str(2*i+random.randint(1,20))))
#设置表头
self.model.setHorizontalHeaderLabels(["x","y"])
#设置行列自适应
self.tableview.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
self.tableview.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
self.tableview.setModel(self.model)
#创建图表实例,并设置图表数据
self.chart=QtCharts.QChart()
self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations)
self.series = QtCharts.QLineSeries()
self.series.setName("y=2*x+b")
self.mapper = QtCharts.QVXYModelMapper(self)
self.mapper.setXColumn(0)
self.mapper.setYColumn(1)
self.mapper.setSeries(self.series)
self.mapper.setModel(self.model)
self.chart.addSeries(self.series)
self.chart.createDefaultAxes()
self.chartview=QtCharts.QChartView(self.chart)
self.chartview.setRenderHint(QtGui.QPainter.Antialiasing)
self.chartview.setMinimumSize(640,480)
#创建布局
self.mainlayout=QtWidgets.QGridLayout()
self.mainlayout.addWidget(self.tableview,1,0)
self.mainlayout.addWidget(self.chartview,1,1)
self.mainlayout.setColumnStretch(1,1)
self.mainlayout.setColumnStretch(0,0)
self.setLayout(self.mainlayout)
if __name__ == "__main__":
app=QtWidgets.QApplication(sys.argv)
mywin=MainWindow()
mywin.setWindowTitle("Model Data")
mywin.show()
sys.exit(app.exec())
留言与评论(共有 0 条评论) “” |