Advertisement
897011326

123

May 19th, 2023
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python for S60 5.12 KB | Source Code | 0 0
  1. import pandas as pd
  2. import tkinter as tk
  3. from tkinter import filedialog
  4. from tkinter import ttk
  5.  
  6. class App:
  7.  
  8.     def __init__(self, master):
  9.         self.file_path = ''
  10.         self.mode = tk.IntVar()
  11.         self.file_type = tk.IntVar()
  12.         self.column_options = []
  13.         self.value_options = []
  14.         self.selected_columns = []
  15.         self.selected_values = []
  16.         self.output_path = ''
  17.        
  18.         self.frame1 = tk.Frame(master)
  19.         self.frame1.pack()
  20.  
  21.         self.read_file_button = tk.Button(self.frame1, text="打开文件", command=self.read_file)
  22.         self.read_file_button.pack(side="left")
  23.        
  24.         self.mode_select_buttons_frame = tk.Frame(self.frame1)
  25.         self.mode_select_buttons_frame.pack(side="left")
  26.        
  27.         tk.Radiobutton(self.mode_select_buttons_frame, text="单文件模式", variable=self.mode, value=1).pack()
  28.         tk.Radiobutton(self.mode_select_buttons_frame, text="批量文件模式", variable=self.mode, value=2).pack()
  29.        
  30.         self.file_type_select_buttons_frame = tk.Frame(self.frame1)
  31.         self.file_type_select_buttons_frame.pack(side="right")
  32.        
  33.         tk.Radiobutton(self.file_type_select_buttons_frame, text="CSV文件", variable=self.file_type, value=1).pack()
  34.         tk.Radiobutton(self.file_type_select_buttons_frame, text="Excel文件", variable=self.file_type, value=2).pack()
  35.        
  36.         self.frame2 = tk.Frame(master)
  37.         self.frame2.pack()
  38.        
  39.         self.column_options_label = tk.Label(self.frame2, text="选择要筛选的列")
  40.         self.column_options_label.pack(side="left")
  41.        
  42.         self.column_options_dropdown = ttk.Combobox(self.frame2, values=self.column_options, state="readonly", width=30)
  43.         self.column_options_dropdown.pack(side="left")
  44.        
  45.         self.frame3 = tk.Frame(master)
  46.         self.frame3.pack()
  47.        
  48.         self.value_options_label = tk.Label(self.frame3, text="选择要筛选的值")
  49.         self.value_options_label.pack(side="left")
  50.        
  51.         self.value_options_dropdown = ttk.Combobox(self.frame3, values=self.value_options, state="readonly", width=30)
  52.         self.value_options_dropdown.pack(side="left")
  53.        
  54.         self.frame4 = tk.Frame(master)
  55.         self.frame4.pack()
  56.        
  57.         self.output_path_label = tk.Label(self.frame4, text="选择输出文件夹")
  58.         self.output_path_label.pack(side="left")
  59.        
  60.         self.output_path_button = tk.Button(self.frame4, text="浏览", command=self.select_output_path)
  61.         self.output_path_button.pack(side="right")
  62.        
  63.         self.filter_button = tk.Button(master, text="筛选", command=self.filter)
  64.         self.filter_button.pack()
  65.  
  66.     def read_file(self):
  67.         self.file_path = filedialog.askopenfilename()
  68.         print("选择的文件:", self.file_path)
  69.        
  70.         # Add code here to read file and display column options and value options
  71.         if self.file_type.get() == 1:
  72.             # CSV file
  73.             df = pd.read_csv(self.file_path)
  74.         else:
  75.             # Excel file
  76.             df = pd.read_excel(self.file_path)
  77.            
  78.         self.column_options = list(df.columns)
  79.         self.column_options_dropdown["values"] = self.column_options
  80.  
  81.         self.update_value_options()
  82.        
  83.         self.column_options_dropdown.bind("<<ComboboxSelected>>", lambda _: self.update_value_options())
  84.        
  85.  
  86.     def update_value_options(self, event=None):
  87.         selected_column = self.column_options_dropdown.get()
  88.  
  89.         if self.file_type.get() == 1:
  90.             # CSV file
  91.             df = pd.read_csv(self.file_path)
  92.         else:
  93.             # Excel file
  94.             df = pd.read_excel(self.file_path)
  95.  
  96.         self.value_options = sorted(df[selected_column].unique().tolist())
  97.         self.value_options_dropdown["values"] = self.value_options
  98.  
  99.     def select_output_path(self):
  100.         self.output_path = filedialog.askdirectory()
  101.         print("选择的输出路径:", self.output_path)
  102.  
  103.     def filter(self):
  104.         # Add code here to filter the selected columns and values and save to output_path
  105.         selected_column = self.column_options_dropdown.get()
  106.         selected_value = self.value_options_dropdown.get()
  107.        
  108.         if self.file_type.get() == 1:
  109.             # CSV file
  110.             df = pd.read_csv(self.file_path)
  111.         else:
  112.             # Excel file
  113.             df = pd.read_excel(self.file_path)
  114.            
  115.         filtered_df = df[df[selected_column] == selected_value]
  116.        
  117.         if self.mode
  118.          .get() == 1:
  119.         # Single file mode
  120.         output_filename = "filtered_" + self.file_path.split("/")[-1]
  121.         output_file_path = self.output_path + "/" + output_filename
  122.        
  123.         if self.file_type.get() == 1:
  124.             # CSV file
  125.             filtered_df.to_csv(output_file_path, index=False)
  126.         else:
  127.             # Excel file
  128.             filtered_df.to_excel(output_file_path, index=False)
  129.     else:
  130.         # Batch file mode
  131.         pass
  132.    
  133.     print("筛选完成!")
  134.     root = tk.Tk()
  135.     app = App(root)
  136.     root.mainloop()
  137.  
Tags: python
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement