制作窗体,在文本框里输入文件名(“score.csv” ),点击按钮后,打开文件,处理文件里的数据,利用matplotlib来进行成绩总分的分析与可视化。要求姓名作为横坐标,成绩总分作为纵坐标。保存为hw3.py上传。样张如下所示: score.csv 捕获.JPG 捕获2.JPG
时间: 2024-02-29 17:53:16 浏览: 60
学生成绩数据集(.csv和.mat格式)
5星 · 资源好评率100%
好的,这是一个需要使用Python编写GUI程序的问题,需要用到tkinter和matplotlib库来实现。以下是一个简单的实现方式,你可以参考一下:
```python
import tkinter as tk
import matplotlib.pyplot as plt
import csv
class ScoreAnalyzer:
def __init__(self, master):
self.master = master
master.title("成绩分析器")
# 创建文本框和按钮
self.label = tk.Label(master, text="请输入文件名:")
self.label.pack()
self.entry = tk.Entry(master)
self.entry.pack()
self.button = tk.Button(master, text="打开文件", command=self.open_file)
self.button.pack()
# 创建图表
self.figure, self.ax = plt.subplots()
self.ax.set_xlabel('姓名')
self.ax.set_ylabel('成绩总分')
def open_file(self):
filename = self.entry.get()
try:
with open(filename, 'r') as f:
reader = csv.reader(f)
data = {}
next(reader) # 跳过表头
for row in reader:
name = row[0]
scores = [int(x) for x in row[1:]]
total_score = sum(scores)
data[name] = total_score
# 绘制柱状图
names = list(data.keys())
scores = list(data.values())
self.ax.bar(names, scores)
self.ax.set_xticklabels(names, rotation=90)
self.ax.set_title('成绩总分分析')
plt.show()
except FileNotFoundError:
print("文件不存在!")
root = tk.Tk()
my_gui = ScoreAnalyzer(root)
root.mainloop()
```
这个程序会创建一个窗口,包含一个文本框和一个按钮。当用户输入文件名并点击按钮后,程序会打开文件、读取数据、计算每个人的成绩总分,并用matplotlib库绘制柱状图显示分析结果。注意,这里我假设score.csv文件的第一行是表头,数据从第二行开始。
你可以把这个代码保存为hw3.py文件并运行。当你输入score.csv并点击打开按钮后,就会弹出一个图表窗口,显示分析结果。
阅读全文