From 0a1a2a4889402d3d91fb24402819eb31ae580c4c Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Fri, 6 Oct 2017 21:07:41 +0530 Subject: [PATCH 1/4] Add Expense Manager --- Expense_manager/expense_manager.py | 340 +++++++++++++++++++++++++++++ 1 file changed, 340 insertions(+) create mode 100644 Expense_manager/expense_manager.py diff --git a/Expense_manager/expense_manager.py b/Expense_manager/expense_manager.py new file mode 100644 index 0000000..469b2ff --- /dev/null +++ b/Expense_manager/expense_manager.py @@ -0,0 +1,340 @@ +#General Function: + +def combine_funcs(*funcs): + def combined_func(*args, **kwargs): + for f in funcs: + f(*args, **kwargs) + return combined_func + + + +#Defining the create function: + +def create(): + def sub_create(): + def sub1(): + def sub2(): + f1.destroy() + b=TextArea.get("1.0",'end') + if(b!='0'): + f.write(b) + f.write("\n") + f2.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Congratulations! Your Entry Is Made.",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true") + b1=tkinter.Button(f1,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + a=e.get() + a=a.upper() + f1.destroy() + f=open(a,"w") + f2=tkinter.Frame(bg="#CCCCFF") + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Make An Entry:\n\nExample: Item1 Rs amount\nItem2 Rs amount",bg="#FFFFFF",fg="#680000",relief="groove",anchor="n",pady=50,font=25) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2,bg="white") + ScrollBar.config(command=TextArea.yview) + TextArea.config(yscrollcommand=ScrollBar.set) + ScrollBar.pack(side="right", fill="y") + TextArea.pack(fill="x") + b1=tkinter.Button(f2,text="Submit",bg="#FFFFFF",fg="blue",relief="groove",command=sub1) + b1.pack() + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Make Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_create,height=2,width=10) + b1.place(relx=0.45,rely=0.56) + + +#Defining the get function: + +def get(): + def sub_get(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + f1.destroy() + f=open(a,'r') + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Your Entries For The Date "+a+" Are: ",bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2) + ScrollBar.config(command=TextArea.yview) + ScrollBar.pack(side="right", fill="y") + TextArea.insert('insert',f.read()) + TextArea.config(yscrollcommand=ScrollBar.set,state="disabled") + TextArea.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_get,height=2,width=10) + b1.place(relx=0.45,rely=0.56) + +#Defining the get entry by month function: + +def getm(): + def sub_getm(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + f1.destroy() + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Your Entries For The Month Are: ",bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2) + ScrollBar.config(command=TextArea.yview) + ScrollBar.pack(side="right", fill="y") + for i in range(1,32): + try: + f=open(str(i)+' '+a,'r') + except IOError: + continue + TextArea.insert('insert',"\n"+str(i)+' '+a+": \n\n"+f.read()) + TextArea.config(yscrollcommand=ScrollBar.set,state="disabled") + TextArea.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Month And Year:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.3,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_getm,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + + + + +#Get Total Expense By Date: + + +def Sum(): + def sub_Sum(): + def sub2(): + f2.destroy() + t=e.get() + t=t.upper() + try: + f=open(t,'r') + a=f.readlines() + c=0 + for i in range(0,len(a)): + b='' + for j in range(len(a[i])-1,0,-1): + if(a[i][j]!=' ' and a[i][j]>='0' and a[i][j]<='9'): + b=b+a[i][j] + if(a[i][j]>='9'): + break + if(b!=''): + c=c+int(b[::-1]) + f1.destroy() + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Total Expenses On "+t+" Are: \nRs "+str(c),bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50,font=50) + l1.pack(fill="both",expand="true") + except IOError: + l1=tkinter.Label(f2,text="No Such Entry Is Made "+t+" Are: \nRs "+str(c),bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50,font=50) + l1.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Expenses",bg="#9999FF",fg="#660099",relief="groove",command=sub_Sum,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + +#Defining Get total expense in a month: + +def Summ(): + def sub_Summ(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + c=0 + for i in range(1,32): + try: + f=open(str(i)+' '+a,'r') + t=f.readlines() + for i in range(0,len(t)): + b='' + for j in range(len(t[i])-1,0,-1): + if(t[i][j]!=' ' and t[i][j]>='0' and t[i][j]<='9'): + b=b+t[i][j] + if(b!=''): + c=c+int(b[::-1]) + except IOError: + continue + f1.destroy() + f2=tkinter.Frame() + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Total Expenses In "+a+" Are: \nRs "+str(c),bg="#FFFFFF",fg="#680000",relief="groove",anchor="center",pady=50,font=50) + l1.pack(fill="both",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Month And Year:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.3,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Get Expenses",bg="#9999FF",fg="#660099",relief="groove",command=sub_Summ,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + + + +# Defining Add to entry: + +def add(): + def sub_add(): + def sub1(): + def sub2(): + f1.destroy() + b=TextArea.get("1.0",'end') + if(b!='0'): + f.write(b) + f.write("\n") + f2.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Congratulations! Your Entry Is Made.",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true") + b1=tkinter.Button(f1,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + a=e.get() + a=a.upper() + f1.destroy() + f=open(a,"a") + f2=tkinter.Frame(bg="#CCCCFF") + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Make An Entry:\n\nExample: Item1 Rs amount\nItem2 Rs amount",bg="#FFFFFF",fg="#680000",relief="groove",anchor="n",pady=50,font=25) + l1.pack(fill="x",expand="true") + TextArea = tkinter.Text(f2) + ScrollBar = tkinter.Scrollbar(f2,bg="white") + ScrollBar.config(command=TextArea.yview) + TextArea.config(yscrollcommand=ScrollBar.set) + ScrollBar.pack(side="right", fill="y") + TextArea.pack(fill="x") + b1=tkinter.Button(f2,text="Submit",bg="#FFFFFF",fg="blue",relief="groove",command=sub1) + b1.pack() + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Make Entry",bg="#9999FF",fg="#660099",relief="groove",command=sub_add,height=2,width=10) + b1.place(relx=0.45,rely=0.56) + +# Defining Delete Existing Entry: + +def delete(): + import os + delete=lambda x:os.remove(x) + def sub_delete(): + def sub2(): + f2.destroy() + a=e.get() + a=a.upper() + delete(a) + f1.destroy() + f2=tkinter.Frame(bg="#CCCCFF") + f2.pack(fill="both",expand="true") + l1=tkinter.Label(f2,text="Congratulations! Your Entry Is Deleted.",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true") + b1=tkinter.Button(f2,text="Return To MainMenu",bg="#FFFFFF",fg="blue",relief="groove",command=combine_funcs(sub2,start),height=2,width=25) + b1.pack(side="right") + frame.destroy() + f1=tkinter.Frame(bg="#CCCCFF") + f1.pack(fill="both",expand="true") + l1=tkinter.Label(f1,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(f1,text="Enter Date:",bg="#330033",fg="#FFFFFF",relief="groove",font=9,padx=50) + l1.place(relx=0.35,rely=0.5) + e=tkinter.Entry(f1) + e.place(relx=0.52,rely=0.5) + b1=tkinter.Button(f1,text="Delete",bg="#9999FF",fg="#660099",relief="groove",command=sub_delete,height=2,width=10) + b1.place(relx=0.47,rely=0.56) + + + +import tkinter +root=tkinter.Tk() +root.geometry('1250x700') +def start(): + global frame + frame=tkinter.Frame(bg="#CCCCFF") + frame.pack(fill="both",expand="true",) + l1=tkinter.Label(frame,text="Welcome To Expense Manager",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="n") + l1=tkinter.Label(frame,text="Press To Create A new Entry",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16,padx=16) + l1.place(relx=0.2,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Create Entry Sheet",bg="#9999FF",fg="#660099",relief="solid",command=create,font=11,pady=16,cursor="dot") + b1.place(relx=0.2,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Entry By Date",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16,padx=16) + l1.place(relx=0.4,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Get Entry Sheet",bg="#9999FF",fg="#660099",relief="solid",command=get,font=11,pady=16,cursor="dot") + b1.place(relx=0.4,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Entry By Month",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16,padx=7) + l1.place(relx=0.6,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Get Monthly Entry Sheet",bg="#9999FF",fg="#660099",relief="solid",command=getm,font=11,pady=16,cursor="dot") + b1.place(relx=0.6,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Total Expense On Date",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.8,rely=0.2,anchor="n") + b1=tkinter.Button(frame,text="Get Total Expense On Date",bg="#9999FF",fg="#660099",relief="solid",command=Sum,font=11,pady=16,cursor="dot") + b1.place(relx=0.8,rely=0.3,anchor="n") + l1=tkinter.Label(frame,text="Press To Get Total Expense In A Month",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.3,rely=0.5,anchor="n") + b1=tkinter.Button(frame,text="Get Total Expense",bg="#9999FF",fg="#660099",relief="solid",command=Summ,font=11,pady=16,cursor="dot") + b1.place(relx=0.3,rely=0.6,anchor="n") + l1=tkinter.Label(frame,text="Press To Add To Existing Entry",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.51,rely=0.5,anchor="n") + b1=tkinter.Button(frame,text="Add To Entry",bg="#9999FF",fg="#660099",relief="solid",command=add,font=11,pady=16,cursor="dot") + b1.place(relx=0.51,rely=0.6,anchor="n") + l1=tkinter.Label(frame,text="Press To Delete Existing Entry",bg="#330066",fg="#66FFFF",relief="groove",pady=15,font=16) + l1.place(relx=0.7,rely=0.5,anchor="n") + b1=tkinter.Button(frame,text="Delete Entry",bg="#9999FF",fg="#660099",relief="solid",command=delete,font=11,pady=16,cursor="dot") + b1.place(relx=0.7,rely=0.6,anchor="n") + l1=tkinter.Label(frame,text="\u00a9"+" copyright 2016\t\t\t\t\t\t\t\t\t\t\t\t"+"Developed By: Akshit Grover",bg="#330033",fg="#FFFFFF",relief="groove",pady=30,font=16) + l1.pack(fill="x",expand="true",anchor="s") + root.mainloop() +start() From add40db36ee3050bd586df40f7a8b3203d9dd1b2 Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Fri, 6 Oct 2017 21:09:50 +0530 Subject: [PATCH 2/4] Update Contributors --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 989a718..7e918a5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Python Scripts +# Python Scripts > This Repo is a collection of Various python scripts. @@ -173,3 +173,4 @@ The following people helped in creating the above content. * Pradhvan Bisht * David Antonini * Nguyen Anh Tien +*Akshit Grover From ff4cc804363619df4c6997b7f991a2e1ee03196a Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Fri, 6 Oct 2017 21:24:33 +0530 Subject: [PATCH 3/4] Update Run Command --- README.md | 7 +++++++ Expense_manager/expense_manager.py => expense_manager.py | 0 2 files changed, 7 insertions(+) rename Expense_manager/expense_manager.py => expense_manager.py (100%) diff --git a/README.md b/README.md index 7e918a5..516f95f 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,13 @@ pip install twitter python bulk_add_twitter_list.py ``` +### Expense Manager +SImple GUI program which helps you calculate your expenses, monitor them just through mouse clicks. All you have to do is run the script and choose an option from the menu which will displayed when you run the script. Enter Your Expenses as eg: "Biscuits Rs 15" " rs " ignore the quotes. + +```bash +python expense_manger.py +``` + ## Release History * 0.0.1 diff --git a/Expense_manager/expense_manager.py b/expense_manager.py similarity index 100% rename from Expense_manager/expense_manager.py rename to expense_manager.py From f84497cc5b70a2c5ebf25516a764f28e8cfeda47 Mon Sep 17 00:00:00 2001 From: Akshit Grover Date: Fri, 6 Oct 2017 21:26:17 +0530 Subject: [PATCH 4/4] Update Readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 516f95f..c8adffa 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ python bulk_add_twitter_list.py ``` ### Expense Manager -SImple GUI program which helps you calculate your expenses, monitor them just through mouse clicks. All you have to do is run the script and choose an option from the menu which will displayed when you run the script. Enter Your Expenses as eg: "Biscuits Rs 15" " rs " ignore the quotes. +Simple GUI program which helps you calculate your expenses, monitor them just through mouse clicks. All you have to do is run the script and choose an option from the menu which will displayed when you run the script. Enter Your Expenses as eg: "Biscuits Rs 15" " rs " ignore the quotes. ```bash python expense_manger.py