Python Forum
What can I add more? or is it fine>
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
What can I add more? or is it fine>
#1
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()
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020