├── README.md └── pythonproject.py /README.md: -------------------------------------------------------------------------------- 1 | # python-banking-project-with-mysql-database-and-using-tkinter 2 | python banking project with tkinter and mysql database connection 3 | #step by step guide to run the complete project 4 | # install database mysql 5 | here is link on installation 6 | https://www.sqlshack.com/how-to-install-mysql-database-server-8-0-19-on-windows-10/ 7 | after installation 8 | open mysql by providing your userid and password like in code there is my userid and password 9 | # now create database by running query 10 | Create DB so 11 | # now make all the table emp3 12 | +---------+-------------+------+-----+---------+-------+ 13 | | Field | Type | Null | Key | Default | Extra | 14 | +---------+-------------+------+-----+---------+-------+ 15 | | name | varchar(20) | YES | | NULL | | 16 | | amount | int(11) | YES | | NULL | | 17 | | account | int(11) | YES | | NULL | | 18 | | ifsc | int(11) | YES | | NULL | | 19 | +---------+-------------+------+-----+---------+-------+ 20 | now afte this everything will be run easily if still you have doubt please ask me query i will help 21 | -------------------------------------------------------------------------------- /pythonproject.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | import os 3 | from pymysql import* 4 | from tkinter import messagebox as msg 5 | 6 | def register(): 7 | global register_screen 8 | register_screen = Toplevel(main_screen) 9 | register_screen.title("Register") 10 | register_screen.geometry("1000x250") 11 | 12 | global username 13 | global password 14 | global username_entry 15 | global password_entry 16 | username = StringVar() 17 | password = StringVar() 18 | 19 | Label(register_screen, text="Please enter details below", bg="red").pack() 20 | Label(register_screen, text="").pack() 21 | username_lable = Label(register_screen, text="Username * ") 22 | 23 | #username_label.grid(register_screen,row=0,column=0) 24 | 25 | username_lable.pack() 26 | username_entry = Entry(register_screen,textvariable=username) 27 | #username_entry.grid(register_screen,row=0,column=1) 28 | username_entry.pack() 29 | contactnumber_lable = Label(register_screen, text="contact number * ") 30 | contactnumber_lable.pack() 31 | contactnumber_entry = Entry(register_screen) 32 | contactnumber_entry.pack() 33 | fathername_lable = Label(register_screen, text="father name * ") 34 | fathername_lable.pack() 35 | fathername_entry = Entry(register_screen) 36 | fathername_entry.pack() 37 | dateofbirth_lable = Label(register_screen, text="Date of birth(YYYY-MM-DD ) * ") 38 | dateofbirth_lable.pack() 39 | dateofbirth_entry = Entry(register_screen) 40 | dateofbirth_entry.pack() 41 | emailid_lable = Label(register_screen, text="Email Id * ") 42 | emailid_lable.pack() 43 | emailid_entry = Entry(register_screen) 44 | emailid_entry.pack() 45 | 46 | 47 | password_lable = Label(register_screen, text="Password * ") 48 | password_lable.pack() 49 | password_entry = Entry(register_screen, textvariable=password, show='*') 50 | password_entry.pack() 51 | 52 | Label(register_screen, text="").pack() 53 | Button(register_screen, text="Register", width=10, height=1, bg="red", command = register_user).pack() 54 | 55 | 56 | 57 | # Designing window for login 58 | 59 | def login(): 60 | global login_screen 61 | login_screen = Toplevel(main_screen) 62 | login_screen.title("Login") 63 | login_screen.geometry("3000x2500") 64 | Label(login_screen, text="Please enter details below to login").pack() 65 | Label(login_screen, text="").pack() 66 | 67 | global username_verify 68 | global password_verify 69 | 70 | username_verify = StringVar() 71 | password_verify = StringVar() 72 | 73 | global username_login_entry 74 | global password_login_entry 75 | 76 | Label(login_screen, text="Username * ").pack() 77 | username_login_entry = Entry(login_screen, textvariable=username_verify) 78 | username_login_entry.pack() 79 | Label(login_screen, text="").pack() 80 | Label(login_screen, text="Password * ").pack() 81 | password_login_entry = Entry(login_screen, textvariable=password_verify, show= '*') 82 | password_login_entry.pack() 83 | Label(login_screen, text="").pack() 84 | Button(login_screen, text="Login", width=10, height=1, command = login_verify).pack() 85 | 86 | # Implementing event on register button 87 | 88 | def register_user(): 89 | username_info = username.get() 90 | password_info = password.get() 91 | 92 | file = open(username_info, "w") 93 | file.write(username_info + "\n") 94 | file.write(password_info) 95 | file.close() 96 | 97 | username_entry.delete(0, END) 98 | password_entry.delete(0, END) 99 | 100 | Label(register_screen, text="Registration Success", fg="green", font=("calibri", 11)).pack() 101 | 102 | # Implementing event on login button 103 | 104 | def login_verify(): 105 | username1 = username_verify.get() 106 | password1 = password_verify.get() 107 | username_login_entry.delete(0, END) 108 | password_login_entry.delete(0, END) 109 | 110 | list_of_files = os.listdir() 111 | if username1 in list_of_files: 112 | file1 = open(username1, "r") 113 | verify = file1.read().splitlines() 114 | if password1 in verify: 115 | login_sucess() 116 | 117 | else: 118 | password_not_recognised() 119 | 120 | else: 121 | user_not_found() 122 | 123 | # Designing popup for login success 124 | 125 | def login_sucess(): 126 | global login_success_screen 127 | login_success_screen = Toplevel(login_screen) 128 | login_success_screen.title("Success") 129 | login_success_screen.geometry("150x100") 130 | Label(login_success_screen, text="Login Success").pack() 131 | #Button(login_success_screen, text="OK", command=delete_login_success).pack() 132 | Button(login_success_screen, text="OK", command=menu).pack() 133 | 134 | # Designing popup for login invalid password 135 | 136 | def password_not_recognised(): 137 | global password_not_recog_screen 138 | password_not_recog_screen = Toplevel(login_screen) 139 | password_not_recog_screen.title("Success") 140 | password_not_recog_screen.geometry("150x100") 141 | Label(password_not_recog_screen, text="Invalid Password ").pack() 142 | Button(password_not_recog_screen, text="OK", command=delete_password_not_recognised).pack() 143 | 144 | # Designing popup for user not found 145 | 146 | def user_not_found(): 147 | global user_not_found_screen 148 | user_not_found_screen = Toplevel(login_screen) 149 | user_not_found_screen.title("Success") 150 | user_not_found_screen.geometry("150x100") 151 | Label(user_not_found_screen, text="User Not Found").pack() 152 | Button(user_not_found_screen, text="OK", command=delete_user_not_found_screen).pack() 153 | 154 | # Deleting popups 155 | 156 | def delete_login_success(): 157 | login_success_screen.destroy() 158 | 159 | 160 | def delete_password_not_recognised(): 161 | password_not_recog_screen.destroy() 162 | 163 | 164 | def delete_user_not_found_screen(): 165 | user_not_found_screen.destroy() 166 | 167 | 168 | # Designing Main(first) window 169 | def deposit(): 170 | global n1 171 | global a1 172 | global if1 173 | global am1 174 | global deposit_screen 175 | deposit_screen = Toplevel(main_screen) 176 | deposit_screen.title("deposit") 177 | deposit_screen.geometry("3000x2500") 178 | Label(deposit_screen, text="Please enter details below to login").pack() 179 | Label(deposit_screen, text="").pack() 180 | 181 | name_lable = Label(deposit_screen, text="name * ") 182 | name_lable.pack() 183 | n1 = Entry(deposit_screen) 184 | n1.pack() 185 | 186 | account_lable = Label(deposit_screen, text="Account number * ") 187 | account_lable.pack() 188 | a1 = Entry(deposit_screen) 189 | a1.pack() 190 | 191 | ifsc_lable = Label(deposit_screen, text="IFSC code * ") 192 | ifsc_lable.pack() 193 | if1 = Entry(deposit_screen) 194 | if1.pack() 195 | 196 | amount_lable = Label(deposit_screen, text="Amount * ") 197 | amount_lable.pack() 198 | am1 = Entry(deposit_screen) 199 | am1.pack() 200 | 201 | #account_lable = Label(deposit_screen, text="Account number * ") 202 | Label(deposit_screen, text="").pack() 203 | Button(deposit_screen, text="deposit", width=10, height=1, bg="red", command = save).pack() 204 | Label(deposit_screen, text="").pack() 205 | Button(deposit_screen,text="GO HOME", height="2", width="10",fg='black',bg='orange', command=main_menu).pack() 206 | Label(deposit_screen,text="").pack(side=left) 207 | def main_menu(): 208 | deposit_screen.destroy() 209 | def save(): 210 | con=connect(db='so',user='root',passwd='system',host='localhost') 211 | cur=con.cursor() 212 | #eno=int(account_entry.get()) 213 | name=n1.get() 214 | account=int(a1.get()) 215 | amount=int(am1.get()) 216 | ifsc=int(if1.get()) 217 | i=cur.execute("insert into emp3 values(%s,'%d',%d, %d)"%(name,account,amount,ifsc)) 218 | if i>=1: 219 | con.commit() 220 | msg.showinfo('Information','Reocrd Saved') 221 | a1.delete(0,'end') 222 | n1.delete(0,'end') 223 | am1.delete(0,'end') 224 | 225 | con.close() 226 | def withdraw(): 227 | global withdraw_screen 228 | withdraw_screen = Toplevel(main_screen) 229 | withdraw_screen.title("Withdraw") 230 | withdraw_screen.geometry("3000x2500") 231 | Label(withdraw_screen, text="Please enter details below to login").pack() 232 | Label(withdraw_screen, text="").pack() 233 | 234 | name_lable = Label(withdraw_screen, text="name * ") 235 | name_lable.pack() 236 | n1 = Entry(withdraw_screen) 237 | n1.pack() 238 | 239 | account_lable = Label(withdraw_screen, text="Account number * ") 240 | account_lable.pack() 241 | a1 = Entry(withdraw_screen) 242 | a1.pack() 243 | 244 | ifsc_lable = Label(withdraw_screen, text="IFSC code * ") 245 | ifsc_lable.pack() 246 | if1 = Entry(withdraw_screen) 247 | if1.pack() 248 | 249 | amount_lable = Label(withdraw_screen, text="Amount * ") 250 | amount_lable.pack() 251 | am1 = Entry(withdraw_screen) 252 | am1.pack() 253 | Label(withdraw_screen, text="").pack() 254 | Button(withdraw_screen, text="withdraw", width=10, height=1, bg="red", command = save).pack() 255 | Label(withdraw_screen, text="").pack() 256 | Button(withdraw_screen,text="GO HOME", height="2", width="10",fg='black',bg='orange', command=main_menu1).pack() 257 | Label(withdraw_screen,text="").pack(side=left) 258 | def main_menu1(): 259 | withdraw_screen.destroy() 260 | 261 | def menu(): 262 | global menu_screen 263 | menu_screen = Toplevel(main_screen) 264 | menu_screen.title("menu") 265 | menu_screen.geometry("3000x2500") 266 | Label(menu_screen,text="Select Your Choice", bg="green", width="300", height="2", font=("Calibri", 13)).pack() 267 | Label(menu_screen,text="").pack() 268 | Button(menu_screen,text="Deposit", height="2", width="30",fg='black',bg='violet', command=deposit).pack() 269 | Label(menu_screen,text="").pack() 270 | Button(menu_screen,text="Withdraw", height="2", width="30",fg='black',bg='orange', command=withdraw).pack() 271 | Label(menu_screen,text="").pack() 272 | Button(menu_screen,text="Balance", height="2", width="30",fg='black',bg='orange', command=balance).pack() 273 | Label(menu_screen,text="").pack() 274 | Button(menu_screen,text="FUND TRANSFER", height="2", width="30",fg='black',bg='orange', command=fund_transfer).pack() 275 | Label(menu_screen,text="").pack() 276 | Button(menu_screen,text="logout", height="2", width="10",fg='black',bg='orange', command=logout2).pack() 277 | Label(menu_screen,text="").pack(side=left) 278 | def logout2(): 279 | menu_screen.destroy() 280 | def balance(): 281 | global balance_screen 282 | balance_screen=Toplevel(main_screen) 283 | balance_screen.title("balance enquiry") 284 | withdraw_screen.geometry("300x250") 285 | Label(withdraw_screen, text="Please enter details below to login").pack() 286 | Label(withdraw_screen, text="").pack() 287 | 288 | def main_account_screen(): 289 | global main_screen 290 | main_screen = Tk() 291 | main_screen.geometry("3000x2500") 292 | main_screen.title("Account Login") 293 | Label(text="Select Your Choice", bg="green", width="300", height="2", font=("Calibri", 13)).pack() 294 | Label(text="").pack() 295 | Button(text="Login", height="5", width="50",fg='black',bg='green' ,font=("Arial Bold", 10) ,command = login).pack() 296 | Label(text="").pack() 297 | Button(text="Register", height="5", width="50",fg='black',bg='blue',font=("Arial Bold", 10), command=register).pack() 298 | Label(text="").pack() 299 | Button(text="Deposit", height="5", width="50",fg='black',bg='violet',font=("Arial Bold", 10), command=deposit).pack() 300 | Label(text="").pack() 301 | Button(text="Withdraw", height="5", width="50",fg='black',bg='orange',font=("Arial Bold", 10), command=withdraw).pack() 302 | Label(text="").pack() 303 | 304 | main_screen.mainloop() 305 | 306 | 307 | main_account_screen() 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | --------------------------------------------------------------------------------