1+ from tkinter import *
2+ from tkinter import messagebox
3+ from random import choice ,randint ,shuffle
4+ import pyperclip
5+ import json
6+
7+
8+
9+ # ---------------------------- PASSWORD GENERATOR ------------------------------- #
10+
11+
12+
13+ def generate_password ():
14+ letters = ['a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' ,
15+ 'v' , 'w' , 'x' , 'y' , 'z' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' ,
16+ 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' ]
17+ numbers = ['0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ]
18+ symbols = ['!' , '#' , '$' , '%' , '&' , '*' , '+' ]
19+
20+ password_letters = [choice (letters ) for char in range (randint (8 , 10 ))]
21+
22+ password_symbols = [choice (symbols ) for char_1 in range (randint (2 , 4 ))]
23+
24+ password_numbers = [choice (numbers ) for char_2 in range (randint (2 , 4 ))]
25+
26+ password_list = password_letters + password_symbols + password_numbers
27+ shuffle (password_list )
28+
29+ password = "" .join (password_list )
30+
31+ print (f"Your password is: { password } " )
32+
33+ # in entry password entered
34+ password_entry .insert (0 , password )
35+
36+ # password copy
37+ pyperclip .copy (password )
38+ # ---------------------------- SAVE PASSWORD ------------------------------- #
39+
40+ def student_info ():
41+ student_argument = student_name .get ()
42+ email_argument = email_entry .get ()
43+ password_argument = password_entry .get ()
44+ Roll_number_argument = Roll_number_entry .get ()
45+ Subject_argument = Subject_entry .get ()
46+ new_datas = {
47+ student_argument :{
48+ "email" :email_argument ,
49+ "password" :password_argument ,
50+ "Roll Number:" :Roll_number_argument ,
51+ "Subject_name" :Subject_argument
52+ }
53+ }
54+
55+ if len (student_argument )== 0 or len (email_argument )== 0 or len (password_argument )== 0 :
56+ messagebox .showinfo (title = "Alert!!" , message = "You Left Some Credential Entry" )
57+ else :
58+ is_ok = messagebox .askokcancel (title = student_argument ,message = f"Saved Information \n \n Email: { email_argument } " f"\n \n Password: { password_argument } " )
59+
60+ if is_ok :
61+ try :
62+ with open ("data.json" ,"r" ) as filemanger :
63+ # filemanger.write(f"{website_argument}| {email_argument}|{password_argument} \n")
64+
65+ # Reading old data
66+ data = json .load (filemanger )
67+ except FileNotFoundError :
68+ with open ("data.json" ,"w" ) as filemanger :
69+ # saving updating data
70+ json .dump (new_datas , filemanger ,indent = 4 )
71+
72+ else :
73+ # updating old data with new data
74+ data .update (new_datas )
75+ with open ("data.json" ,"w" ) as filemanger :
76+ # saving updating data
77+ json .dump (data , filemanger , indent = 4 )
78+
79+ finally :
80+ student_name .delete (0 ,END )
81+ password_entry .delete (0 ,END )
82+ email_entry .delete (0 ,END )
83+
84+
85+ def find_password ():
86+ website = student_name .get ()
87+ try :
88+ with open ("data.json" ) as data_file :
89+ data = json .load (data_file )
90+
91+ except FileNotFoundError :
92+ messagebox .showinfo (title = "error" ,message = "no data found in file" )
93+
94+ else :
95+ if website in data :
96+ email = data [website ]["email" ]
97+ password = data [website ]["password" ]
98+ messagebox .showinfo (title = website ,message = f"Email:{ email } \n Password:{ password } " )
99+ else :
100+ messagebox .showinfo (title = "Error" ,message = f"No data found in file { website } ." )
101+
102+
103+
104+ # ---------------------------- UI SETUP ------------------------------- #
105+
106+
107+ student_manager = Tk ()
108+ student_manager .title ("Student Manager " )
109+
110+
111+ student_manager .config (pady = 50 ,padx = 50 )
112+
113+ # set up the image
114+ canvas = Canvas (width = 200 ,height = 200 ,highlightthickness = 0 )
115+ image_set = PhotoImage (file = "student.png" )
116+ canvas .create_image (100 ,100 ,image = image_set )
117+ canvas .grid (row = 0 ,column = 1 )
118+
119+ # website icon setup
120+ student_name = Label (text = "Name:" )
121+ student_name .grid (row = 1 ,column = 0 )
122+
123+ student_name = Entry (width = 21 )
124+ student_name .grid (row = 1 ,column = 1 )
125+
126+ # website_entry.insert(0,"abc.com")
127+
128+ # email icon setup
129+ Email_name = Label (text = "Email/Username:" )
130+ Email_name .grid (row = 2 ,column = 0 )
131+
132+ email_entry = Entry (width = 39 )
133+ email_entry .grid (row = 2 ,column = 1 ,columnspan = 2 )
134+
135+
136+ # password icon setup
137+ password_name = Label (text = "Password:" )
138+ password_name .grid (row = 3 ,column = 0 )
139+
140+ password_entry = Entry (width = 21 )
141+ password_entry .grid (row = 3 ,column = 1 )
142+
143+ Roll_number = Label (text = "Roll Number" )
144+ Roll_number .grid (row = 4 ,column = 0 )
145+
146+ Roll_number_entry = Entry (width = 39 )
147+ Roll_number_entry .grid (row = 4 ,column = 1 ,columnspan = 2 )
148+
149+ # button work
150+ generate_password_button = Button (text = "Generate Password" ,command = generate_password )
151+ generate_password_button .grid (row = 3 ,column = 2 )
152+
153+ Subject_name = Label (text = "Department Name:" )
154+ Subject_name .grid (row = 5 ,column = 0 )
155+
156+ Subject_entry = Entry (width = 39 )
157+ Subject_entry .grid (row = 5 ,column = 1 ,columnspan = 2 )
158+
159+ add_button = Button (text = "Add" ,width = 30 ,command = student_info )
160+ add_button .grid (row = 6 ,column = 1 ,columnspan = 2 )
161+
162+ # search button
163+ search_button = Button (text = "Search" ,command = find_password )
164+ search_button .grid (row = 1 ,column = 2 )
165+
166+ student_manager .mainloop ()
0 commit comments