LouieFord

Register database example

Aug 11th, 2022
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.63 KB | None | 0 0
  1. from tkinter import *
  2. import tkinter.messagebox as tkMessageBox
  3. import sqlite3
  4.  
  5. root = Tk()
  6. root.title("Chatroom login")
  7.  
  8. width = 640
  9. height = 480
  10. screen_width = root.winfo_screenwidth()
  11. screen_height = root.winfo_screenheight()
  12. x = (screen_width/2) - (width/2)
  13. y = (screen_height/2) - (height/2)
  14. root.geometry("%dx%d+%d+%d" % (width, height, x, y))
  15. root.resizable(0, 0)
  16.  
  17. def Database():
  18. global conn, cursor
  19. conn = sqlite3.connect("db_member.db")
  20. cursor = conn.cursor()
  21. cursor.execute("CREATE TABLE IF NOT EXISTS `member` (mem_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username TEXT, password TEXT, firstname TEXT, lastname TEXT)")
  22.  
  23. #=======================================VARIABLES=====================================
  24. USERNAME = StringVar()
  25. PASSWORD = StringVar()
  26. FIRSTNAME = StringVar()
  27. LASTNAME = StringVar()
  28.  
  29. def LoginForm():
  30. global LoginFrame, lbl_result1
  31. LoginFrame = Frame(root)
  32. LoginFrame.pack(side=TOP, pady=80)
  33. lbl_username = Label(LoginFrame, text="Username:", font=('arial', 25), bd=18)
  34. lbl_username.grid(row=1)
  35. lbl_password = Label(LoginFrame, text="Password:", font=('arial', 25), bd=18)
  36. lbl_password.grid(row=2)
  37. lbl_result1 = Label(LoginFrame, text="", font=('arial', 18))
  38. lbl_result1.grid(row=3, columnspan=2)
  39. username = Entry(LoginFrame, font=('arial', 20), textvariable=USERNAME, width=15)
  40. username.grid(row=1, column=1)
  41. password = Entry(LoginFrame, font=('arial', 20), textvariable=PASSWORD, width=15, show="*")
  42. password.grid(row=2, column=1)
  43. btn_login = Button(LoginFrame, text="Login", font=('arial', 18), width=35, command=Login)
  44. btn_login.grid(row=4, columnspan=2, pady=20)
  45. lbl_register = Label(LoginFrame, text="Register", fg="Blue", font=('arial', 12))
  46. lbl_register.grid(row=0, sticky=W)
  47. lbl_register.bind('<Button-1>', ToggleToRegister)
  48.  
  49. def RegisterForm():
  50. global RegisterFrame, lbl_result2
  51. RegisterFrame = Frame(root)
  52. RegisterFrame.pack(side=TOP, pady=40)
  53. lbl_username = Label(RegisterFrame, text="Username:", font=('arial', 18), bd=18)
  54. lbl_username.grid(row=1)
  55. lbl_password = Label(RegisterFrame, text="Password:", font=('arial', 18), bd=18)
  56. lbl_password.grid(row=2)
  57. lbl_firstname = Label(RegisterFrame, text="First name:", font=('arial', 18), bd=18)
  58. lbl_firstname.grid(row=3)
  59. lbl_lastname = Label(RegisterFrame, text="Last name:", font=('arial', 18), bd=18)
  60. lbl_lastname.grid(row=4)
  61. lbl_result2 = Label(RegisterFrame, text="", font=('arial', 18))
  62. lbl_result2.grid(row=5, columnspan=2)
  63. username = Entry(RegisterFrame, font=('arial', 20), textvariable=USERNAME, width=15)
  64. username.grid(row=1, column=1)
  65. password = Entry(RegisterFrame, font=('arial', 20), textvariable=PASSWORD, width=15, show="*")
  66. password.grid(row=2, column=1)
  67. firstname = Entry(RegisterFrame, font=('arial', 20), textvariable=FIRSTNAME, width=15)
  68. firstname.grid(row=3, column=1)
  69. lastname = Entry(RegisterFrame, font=('arial', 20), textvariable=LASTNAME, width=15)
  70. lastname.grid(row=4, column=1)
  71. btn_login = Button(RegisterFrame, text="Register", font=('arial', 18), width=35, command=Register)
  72. btn_login.grid(row=6, columnspan=2, pady=20)
  73. lbl_login = Label(RegisterFrame, text="Login", fg="Blue", font=('arial', 18))
  74. lbl_login.grid(row=0, sticky=W)
  75. lbl_login.bind('<Button-1>', ToggleToLogin)
  76.  
  77.  
  78.  
  79. #=======================================METHODS=======================================
  80. def Exit():
  81. result = tkMessageBox.askquestion('System', 'Are you sure you want to exit?', icon="warning")
  82. if result == 'yes':
  83. root.destroy()
  84. exit()
  85.  
  86. def ToggleToLogin(event=None):
  87. RegisterFrame.destroy()
  88. LoginForm()
  89.  
  90. def ToggleToRegister(event=None):
  91. LoginFrame.destroy()
  92. RegisterForm()
  93.  
  94. def Register():
  95. Database()
  96. if USERNAME.get == "" or PASSWORD.get() == "" or FIRSTNAME.get() == "" or LASTNAME.get == "":
  97. lbl_result2.config(text="Please complete the required field!", fg="orange")
  98. else:
  99. cursor.execute("SELECT * FROM `member` WHERE `username` = ?", (USERNAME.get(),))
  100. if cursor.fetchone() is not None:
  101. lbl_result2.config(text="Username is already taken", fg="red")
  102. else:
  103. cursor.execute("INSERT INTO `member` (username, password, firstname, lastname) VALUES(?, ?, ?, ?)", (str(USERNAME.get()), str(PASSWORD.get()), str(FIRSTNAME.get()), str(LASTNAME.get())))
  104. conn.commit()
  105. USERNAME.set("")
  106. PASSWORD.set("")
  107. FIRSTNAME.set("")
  108. LASTNAME.set("")
  109. lbl_result2.config(text="Successfully Created!", fg="black")
  110. cursor.close()
  111. conn.close()
  112. def Login():
  113. Database()
  114. if USERNAME.get == "" or PASSWORD.get() == "":
  115. lbl_result1.config(text="Please complete the required field!", fg="orange")
  116. else:
  117. cursor.execute("SELECT * FROM `member` WHERE `username` = ? and `password` = ?", (USERNAME.get(), PASSWORD.get()))
  118. if cursor.fetchone() is not None:
  119. lbl_result1.config(text="You Successfully Login", fg="blue")
  120. else:
  121. lbl_result1.config(text="Invalid Username or password", fg="red")
  122. LoginForm()
  123.  
  124. #========================================MENUBAR WIDGETS==================================
  125. menubar = Menu(root)
  126. filemenu = Menu(menubar, tearoff=0)
  127. filemenu.add_command(label="Exit", command=Exit)
  128. menubar.add_cascade(label="File", menu=filemenu)
  129. root.config(menu=menubar)
  130.  
  131. #========================================INITIALIZATION===================================
  132. if __name__ == '__main__':
  133. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment