Dec-11-2024, 07:47 AM
Hello guys I have made a Duplicate Remover using tkdnd and pandas what should I add more to it?
import os from tkinter import * import pandas as pd import tkinter.messagebox as tmsg from tkinter.scrolledtext import ScrolledText from tkinterdnd2 import DND_FILES, TkinterDnD class Dup(TkinterDnD.Tk): def __init__(self): super().__init__() self.title('DupFree') self.geometry('1150x600') self.frame = Frame(self) self.frame.pack(fill=BOTH, expand=True, pady=10) self.text1 = 'File name..' def drop_inside_box(self,event): file_path = event.data if file_path.endswith(('.xls', '.xlsx')): self.df = pd.read_excel(file_path) self.display_df(self.df, self.listb1) # self.listb1.delete('1.0', END) # self.listb1.insert(END,self.df.to_string(index=False)) def display_df(self,df,text_widget): text_widget.delete('1.0',END) table_str = df.to_markdown(tablefmt="fancy_grid",index=False) text_widget.insert(END,table_str) def removeDup(self): self.remove = self.df.drop_duplicates() self.display_df(self.remove,self.listb2) # self.listb2.delete('1.0',END) # self.listb2.insert(END,self.remove.to_string(index=False)) dup = self.df[self.df.duplicated(keep='first')] self.display_df(dup, self.listb3) # self.listb3.delete('1.0',END) # self.listb3.insert(END,dup.to_string(index=False)) def focus_on(self,event): if self.e1.get() == self.text1: self.e1.delete(0,END) self.e1.config(fg='black') def show_info(self): tmsg.showinfo('Saved',f'{self.e1.get()}.xlsx has saved in {os.getcwd()}') def focus_off(self,event): if self.e1.get() == "": self.e1.insert(END, self.text1) self.e1.config(fg='gray') def entry(self): self.e1 = Entry(self.frame, font='lucida 13', fg='gray') self.e1.insert(0, self.text1) self.e1.bind('<FocusIn>', self.focus_on) self.e1.bind('<FocusOut>', self.focus_off) self.e1.place(x=485, y=475) b3 = Button(self.frame, text='Save to excel', command=self.save_to_excel, font='lucida 10 bold') b3.place(x=527, y=510) def save_to_excel(self): path_get = os.getcwd() file_path = os.path.join(path_get,f'{self.e1.get()}.xlsx') with pd.ExcelWriter(file_path) as writer: self.remove.to_excel(writer,sheet_name='Sheet_1',index=False) self.show_info() def button(self): b1 = Button(self.frame,text='Remove Duplicates',font='lucida 10 bold',command=self.removeDup) b2 = Button(self.frame,text='Save',font='lucida 10 bold',command= self.entry) b1.place(x=480,y=430) b2.place(x=640,y=430) def text(self): l1 = Label(self.listb1, text="Drag your raw data here", bg='white', font='lucida 13') self.listb1.window_create('1.0', window=l1) l2 = Label(self.listb2, text="Result", bg='white', font='lucida 13') self.listb2.window_create('1.0', window=l2) l3 = Label(self.listb3, text="Duplicate data", bg='white', font='lucida 13') self.listb3.window_create('1.0', window=l3) def scroll(self): self.s1 = Scrollbar(self.frame,orient='horizontal') self.s2 = Scrollbar(self.frame,orient='horizontal') self.s3 = Scrollbar(self.frame,orient='horizontal') # self.s1.pack(side=BOTTOM,fill=X) self.s1.place(x=0,y=405,width=430) self.s2.place(x=440,y=405,width=352) self.s3.place(x=804,y=405,width=337) def listbox(self): self.listb1 = ScrolledText(self.frame,width=50,height=25,state='normal',wrap='none') self.listb2 = ScrolledText(self.frame,width=40,height=25,state='normal',wrap='none') self.listb3 = ScrolledText(self.frame,width=40,height=25,state='normal',wrap='none') self.listb1.pack(side=LEFT,padx=10,anchor='nw') self.listb2.pack(side=LEFT,padx=10,anchor='n') self.listb3.pack(side=LEFT,padx=10,anchor='ne') self.listb1.drop_target_register(DND_FILES) self.listb1.dnd_bind('<<Drop>>',self.drop_inside_box) self.listb1.config(xscrollcommand=self.s1.set) self.listb2.config(xscrollcommand=self.s2.set) self.listb3.config(xscrollcommand=self.s3.set) self.s1.config(command=self.listb1.xview) self.s2.config(command=self.listb2.xview) self.s3.config(command=self.listb3.xview) if __name__ == '__main__': window = Dup() window.scroll() window.listbox() window.button() window.text() window.mainloop()