from tkinter import ttk
from tkinter import filedialog
from tkinter import *
import pandas as pd
from PIL import ImageTk, Image

class MainWindow:
    def __init__(self):
        self.master = tk.Tk()
        # 设置背景图片
        self.master.title('车辆价格预系统')
        self.master.geometry('1000x600')

        # 创建 canvas 控件
        canvas = tk.Canvas(self.master, width=1000, height=300)
        canvas.pack()

        # 加载图片
        img = Image.open('hhh.jpg')
        img = img.resize((1000, 300), Image.ANTIALIAS)
        img = ImageTk.PhotoImage(img)

        # 在 canvas 上展示图片
        canvas.create_image(0, 0, anchor='nw', image=img)

        frame_title = tk.Frame(self.master)
        frame_title.pack(pady=10)

        # 添加欢迎标签
        welcome_label = tk.Label(frame_title, text='欢迎使用二手车价格预测系统', font=('Arial', 20))
        welcome_label.pack()

        frame_buttons = tk.Frame(self.master)
        frame_buttons.pack(pady=10)

        frame_buttons1 = tk.Frame(frame_buttons)
        frame_buttons1.grid(row=0, column=0, padx=5)
        frame_buttons2 = tk.Frame(frame_buttons)
        frame_buttons2.grid(row=0, column=1, padx=5)
        frame_buttons3 = tk.Frame(frame_buttons)
        frame_buttons3.grid(row=0, column=2, padx=5)
        frame_buttons4 = tk.Frame(frame_buttons)
        frame_buttons4.grid(row=0, column=3, padx=5)
        frame_buttons5 = tk.Frame(frame_buttons)
        frame_buttons5.grid(row=0, column=4, padx=5)
        
        # 创建 Treeview 控件所在的 Frame
        frame_treeview = tk.Frame(self.master)
        frame_treeview.pack(padx=5)

        columns = ('Name', 'Year', 'Kilometers Driven', 'Mileage', 'Engine', 'Power', 'Seats', 'Price')
        self.tree = ttk.Treeview(frame_treeview, columns=columns, show='headings', height=15, padding=0)
        for col in columns:
            self.tree.heading(col, text=col, anchor='center')

        vsb = ttk.Scrollbar(frame_treeview, orient='vertical', command=self.tree.yview)
        vsb.grid(row=0, column=1, sticky='ns')
        self.tree.configure(yscrollcommand=vsb.set)

        self.tree.grid(row=2, column=0, padx=1, pady=1, sticky='nsew')

        # 设置按钮以及事件处理函数
        button_open = tk.Button(frame_buttons1, text='打开文件', font=('Arial', 12), command=self.open_file)
        button_open.grid(row=1 ,column=0, padx=5)

        button_other1 = tk.Button(frame_buttons2, text='数据预处理', font=('Arial', 12), bg='blue', fg='white',command=self.ok_window)
        button_other1.grid(row=0, column=0, padx=5)

        button_other2 = tk.Button(frame_buttons3, text='数据可视化', font=('Arial', 12), bg='green', fg='white',command=self.My_window)
        button_other2.grid(row=0, column=1, padx=5)

        button_other3 = tk.Button(frame_buttons4, text='预测结果', font=('Arial', 12), bg='red', fg='white', command=self.open_price_prediction)
        button_other3.grid(row=0, column=2, padx=5)

        button_exit = tk.Button(frame_buttons5, text='退出', font=('Arial', 12), command=self.master.quit)
        button_exit.grid(row=0, column=5, padx=5)

    # 设置事件处理函数
    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)
            # 清空treeview
            for item in self.tree.get_children():
                self.tree.delete(item)
            # 填充数据
            for index, row in df.iterrows():
                self.tree.insert('', 'end', values=row.tolist())
    
    def ok_window(self):
        pass

    def My_window(self):
        pass

    def open_price_prediction(self):
        pass

# 创建主窗口并运行
root = MainWindow()
root.mainloop()

将上述代码放在 __init__ 方法中,可以将图片放在标题栏下方。你也可以根据需要调整图片大小和位置。

二手车价格预测系统 GUI 开发:使用 Tkinter 创建主窗口

原文地址: https://www.cveoy.top/t/topic/oxQS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录