· 6 years ago · Mar 12, 2019, 11:58 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 menu():
76 with sqlite3.connect("User.db") as db:
77 c = db.cursor()
78 c.execute("SELECT * FROM user")
79 print(c.fetchall())
80
81 window = tkinter.Tk()
82 window.title("Treasure Hunt Game!")
83
84 labelOne = ttk.Label(window, text = """ ~~~~~~~~~~~~~ USER MENU ~~~~~~~~~~~~~
85 """)#label displays instruction
86 labelOne.grid(row = 0, column = 0)#places label in a grid
87
88 btn = ttk.Button(window, text = "Create account", command = newUserTkinter)
89 btn.grid(row = 1, column = 0)#places button in a grid
90
91 labelTwo = ttk.Label(window, text = "Login to your account:")
92 labelTwo.grid(row = 2, column = 0)
93
94 usernameLogin = tkinter.StringVar(window)#value type is classified as a string
95 usernameEntry = ttk.Entry(window, width = 30, textvariable = usernameLogin)
96 usernameEntry.grid(row = 4, column = 0)
97
98 labelTwo = ttk.Label(window, text = "Username")
99 labelTwo.grid(row = 3, column = 0)
100
101 passwordLogin = tkinter.StringVar(window)#value type is classified as a string
102 passwordEntry = ttk.Entry(window, width = 30, textvariable = passwordLogin)
103 passwordEntry.grid(row = 6, column = 0)
104
105 labelTwo = ttk.Label(window, text = "Password")
106 labelTwo.grid(row = 5, column = 0)
107
108 btn = ttk.Button(window, text="Submit", command=lambda: login(usernameLogin, passwordLogin))
109 btn.grid(row = 6, column = 1)
110
111menu()