· 6 years ago · Mar 07, 2019, 12:00 AM
1import sqlite3
2from tkinter import ttk
3import tkinter
4from tkinter import messagebox
5
6with sqlite3.connect("User.db") as db:
7 cursor = db.cursor()
8
9cursor.execute("""CREATE TABLE IF NOT EXISTS user (
10 userID INTEGER PRIMARY KEY,
11 username VARCHAR(20) NOT NULL,
12 password VARCHAR(20) NOT NULL
13 )""")
14
15
16def login(usernameLogin, passwordLogin):
17 while True:
18 username = usernameLogin.get()#Asks for username
19 password = passwordLogin.get()#Asks for password
20 with sqlite3.connect("User.db") as db:#Creates a connection to database
21 c = db.cursor()
22 find_user = ("SELECT * FROM user WHERE username = ? AND password = ?")#Validates inputs for account
23 c.execute(find_user,[(username),(password)])
24 results = c.fetchall()#Fetches values from database
25
26 if results:#Validates if the username/password is recognised
27 for i in results:
28 messagebox.showinfo("", "Welcome "+i[1]+"!")
29 break
30
31 else:
32 messagebox.showinfo("", "Password and username is not recognised")
33 break
34
35def newUser(username1, password1):
36 found = 0
37 while found == 0:
38 username = username1.get()
39 with sqlite3.connect("User.db") as db:
40 c = db.cursor()
41 findUser = ("SELECT * FROM user WHERE username = ?")
42 c.execute(findUser, [(username)])#Checks existence of username in database
43
44 if c.fetchall():
45 messagebox.showinfo("Username", "Username taken please try again.")
46 break
47 else:
48 messagebox.showinfo("", "Account has been created!")
49 found = 1
50
51 password = password1.get()
52 insertData = '''INSERT INTO user(username, password)
53 VALUES(?,?)'''#Inserts new account into databse
54 c.execute(insertData, [(username),(password)])
55 db.commit()
56
57def newUserTkinter():
58 window = tkinter.Tk()
59 window.title("Create new account")
60
61 labelOne = ttk.Label(window, text = "Enter a username:")
62 labelOne.grid(row = 0, column = 0)
63 username1 = tkinter.StringVar(window)#value type is classified as a string
64 usernameEntry = ttk.Entry(window, width = 30, textvariable = username1)
65 usernameEntry.grid(row = 1, column = 0)
66
67 labelTwo = ttk.Label(window, text = "Enter a password:")
68 labelTwo.grid(row = 2, column = 0)
69 password1 = tkinter.StringVar(window)#value type is classified as a string
70 passwordEntry = ttk.Entry(window, width = 30, textvariable = password1)
71 passwordEntry.grid(row = 3, column = 0)
72
73 btn = ttk.Button(window, text="Submit", command=lambda: newUser(username1, password1))
74 btn.grid(row = 3, column = 1)
75
76def removeUser(usernameD, passwordD):
77 exists = 0
78 while exists == 0:#Validates exsistence of account username
79 username = usernameD.get()
80 password = passwordD.get()
81 with sqlite3.connect("User.db") as db:
82 c = db.cursor()
83 findUser = ("SELECT * FROM user WHERE username = ?")
84 c.execute(findUser, [(username)])
85
86 if c.fetchall():
87 messagebox.showinfo("Delete account", "Account deleted!")
88 exists = 1
89 else:
90 messagebox.showinfo("", "Account does not exist")
91 break
92
93 remove_user = ("DELETE from user WHERE username = ? AND password = ?")
94 c.execute(remove_user,[(username),(password)])
95 db.commit()
96
97def removeUserTkinter():
98 window = tkinter.Tk()
99 window.title("Delete account")
100
101 labelOne = ttk.Label(window, text = "Enter account username:")
102 labelOne.grid(row = 0, column = 0)
103 usernameD = tkinter.StringVar(window)#value type is classified as a string
104 usernameEntry = ttk.Entry(window, width = 30, textvariable = usernameD)
105 usernameEntry.grid(row = 1, column = 0)
106
107 labelTwo = ttk.Label(window, text = "Enter account password:")
108 labelTwo.grid(row = 2, column = 0)
109 passwordD = tkinter.StringVar(window)#value type is classified as a string
110 passwordEntry = ttk.Entry(window, width = 30, textvariable = passwordD)
111 passwordEntry.grid(row = 3, column = 0)
112
113 btn = ttk.Button(window, text="Submit", command=lambda: removeUser(usernameD, passwordD))
114 btn.grid(row = 3, column = 1)
115
116def menu():
117 with sqlite3.connect("User.db") as db:
118 c = db.cursor()
119 c.execute("SELECT * FROM user")
120 print(c.fetchall())
121
122 window = tkinter.Tk()
123 window.title("Treasure Hunt Game!")
124
125 labelOne = ttk.Label(window, text = """ ~~~~~~~~~~~~~ USER MENU ~~~~~~~~~~~~~
126 """)#label displays instruction
127 labelOne.grid(row = 0, column = 0)#places label in a grid
128
129 btn = ttk.Button(window, text = "Create account", command = newUserTkinter)
130 btn.grid(row = 1, column = 0)#places button in a grid
131
132 btn = ttk.Button(window, text = "Delete account", command = removeUserTkinter)
133 btn.grid(row = 2, column = 0)#places button in a grid
134
135 labelTwo = ttk.Label(window, text = "Login to your account:")
136 labelTwo.grid(row = 3, column = 0)
137
138 usernameLogin = tkinter.StringVar(window)#value type is classified as a string
139 usernameEntry = ttk.Entry(window, width = 30, textvariable = usernameLogin)
140 usernameEntry.grid(row = 5, column = 0)
141
142 labelTwo = ttk.Label(window, text = "Username")
143 labelTwo.grid(row = 4, column = 0)
144
145 passwordLogin = tkinter.StringVar(window)#value type is classified as a string
146 passwordEntry = ttk.Entry(window, width = 30, textvariable = passwordLogin)
147 passwordEntry.grid(row = 7, column = 0)
148
149 labelTwo = ttk.Label(window, text = "Password")
150 labelTwo.grid(row = 6, column = 0)
151
152 btn = ttk.Button(window, text="Submit", command=lambda: login(usernameLogin, passwordLogin))
153 btn.grid(row = 7, column = 1)
154
155menu()