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