Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- import tkinter as tk
- from tkinter import filedialog
- from tkinter import ttk
- class App:
- def __init__(self, master):
- self.file_path = ''
- self.mode = tk.IntVar()
- self.file_type = tk.IntVar()
- self.column_options = []
- self.value_options = []
- self.selected_columns = []
- self.selected_values = []
- self.output_path = ''
- self.frame1 = tk.Frame(master)
- self.frame1.pack()
- self.read_file_button = tk.Button(self.frame1, text="打开文件", command=self.read_file)
- self.read_file_button.pack(side="left")
- self.mode_select_buttons_frame = tk.Frame(self.frame1)
- self.mode_select_buttons_frame.pack(side="left")
- tk.Radiobutton(self.mode_select_buttons_frame, text="单文件模式", variable=self.mode, value=1).pack()
- tk.Radiobutton(self.mode_select_buttons_frame, text="批量文件模式", variable=self.mode, value=2).pack()
- self.file_type_select_buttons_frame = tk.Frame(self.frame1)
- self.file_type_select_buttons_frame.pack(side="right")
- tk.Radiobutton(self.file_type_select_buttons_frame, text="CSV文件", variable=self.file_type, value=1).pack()
- tk.Radiobutton(self.file_type_select_buttons_frame, text="Excel文件", variable=self.file_type, value=2).pack()
- self.frame2 = tk.Frame(master)
- self.frame2.pack()
- self.column_options_label = tk.Label(self.frame2, text="选择要筛选的列")
- self.column_options_label.pack(side="left")
- self.column_options_dropdown = ttk.Combobox(self.frame2, values=self.column_options, state="readonly", width=30)
- self.column_options_dropdown.pack(side="left")
- self.frame3 = tk.Frame(master)
- self.frame3.pack()
- self.value_options_label = tk.Label(self.frame3, text="选择要筛选的值")
- self.value_options_label.pack(side="left")
- self.value_options_dropdown = ttk.Combobox(self.frame3, values=self.value_options, state="readonly", width=30)
- self.value_options_dropdown.pack(side="left")
- self.frame4 = tk.Frame(master)
- self.frame4.pack()
- self.output_path_label = tk.Label(self.frame4, text="选择输出文件夹")
- self.output_path_label.pack(side="left")
- self.output_path_button = tk.Button(self.frame4, text="浏览", command=self.select_output_path)
- self.output_path_button.pack(side="right")
- self.filter_button = tk.Button(master, text="筛选", command=self.filter)
- self.filter_button.pack()
- def read_file(self):
- self.file_path = filedialog.askopenfilename()
- print("选择的文件:", self.file_path)
- # Add code here to read file and display column options and value options
- if self.file_type.get() == 1:
- # CSV file
- df = pd.read_csv(self.file_path)
- else:
- # Excel file
- df = pd.read_excel(self.file_path)
- self.column_options = list(df.columns)
- self.column_options_dropdown["values"] = self.column_options
- self.update_value_options()
- self.column_options_dropdown.bind("<<ComboboxSelected>>", lambda _: self.update_value_options())
- def update_value_options(self, event=None):
- selected_column = self.column_options_dropdown.get()
- if self.file_type.get() == 1:
- # CSV file
- df = pd.read_csv(self.file_path)
- else:
- # Excel file
- df = pd.read_excel(self.file_path)
- self.value_options = sorted(df[selected_column].unique().tolist())
- self.value_options_dropdown["values"] = self.value_options
- def select_output_path(self):
- self.output_path = filedialog.askdirectory()
- print("选择的输出路径:", self.output_path)
- def filter(self):
- # Add code here to filter the selected columns and values and save to output_path
- selected_column = self.column_options_dropdown.get()
- selected_value = self.value_options_dropdown.get()
- if self.file_type.get() == 1:
- # CSV file
- df = pd.read_csv(self.file_path)
- else:
- # Excel file
- df = pd.read_excel(self.file_path)
- filtered_df = df[df[selected_column] == selected_value]
- if self.mode
- .get() == 1:
- # Single file mode
- output_filename = "filtered_" + self.file_path.split("/")[-1]
- output_file_path = self.output_path + "/" + output_filename
- if self.file_type.get() == 1:
- # CSV file
- filtered_df.to_csv(output_file_path, index=False)
- else:
- # Excel file
- filtered_df.to_excel(output_file_path, index=False)
- else:
- # Batch file mode
- pass
- print("筛选完成!")
- root = tk.Tk()
- app = App(root)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement