class NextWindow def __init__selftop_level selftop_level = top_level #selftop_leveltitle不同年份车价均值 selftop_levelgeometry800x600 # 创建控件 label_info = tkLabelselfmast
需要添加以下代码来创建主窗口并运行应用程序:
import tkinter as tk
from tkinter import filedialog
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
class NextWindow:
def __init__(self,master):
self.master = master
self.master.title("不同年份车价均值")
self.master.geometry('800x600')
# 创建控件
label_info = tk.Label(self.master, text="请选择数据文件:")
label_info.pack(pady=20)
button_open = tk.Button(self.master, text="打开文件", font=("Arial", 12), command=self.open_file)
button_open.pack(pady=10)
self.figure = plt.Figure(figsize=(6, 4))
self.canvas = FigureCanvasTkAgg(self.figure, master=self.master)
self.canvas.get_tk_widget().pack(fill=tk.BOTH, expand=True)
button_exit = tk.Button(self.master, text="退出", font=("Arial", 12), command=self.master.quit)
button_exit.pack(pady=20)
def open_file(self):
file_path = filedialog.askopenfilename(defaultextension=".csv", filetypes=(("CSV files", "*.csv"), ("All Files", "*.*")))
if file_path:
df = pd.read_csv(file_path)
year_price_mean = df.groupby("Year")["Price"].mean()
self.figure.clear()
ax = self.figure.add_subplot(111)
ax.plot(year_price_mean.index, year_price_mean, 'o-', linewidth=2)
ax.set_xlabel("Year")
ax.set_ylabel("Mean Price")
ax.set_title("Year vs Mean Price")
self.canvas.draw_idle()
def run(self):
self.master.mainloop()
if __name__ == '__main__':
root = tk.Tk()
app = NextWindow(root)
app.run()
在这个版本中,我们创建了一个名为root的主窗口,将其传递给NextWindow类的实例,然后运行主循环以启动应用程序。同时,我们对__init__()方法进行了一些修改,以便它能够接收一个主窗口作为参数,并将其用作父级窗口
原文地址: https://www.cveoy.top/t/topic/gEM4 著作权归作者所有。请勿转载和采集!