· 7 years ago · Nov 16, 2018, 08:02 PM
1import tkinter as tk
2from tkinter import messagebox as ms
3from PIL import ImageTk, Image
4import sqlite3
5import sys, os
6
7
8with sqlite3.connect('my.db') as db:
9 c = db.cursor()
10
11#CHANGE USERNAME FOR PRIMARY KEY
12c.execute("CREATE TABLE IF NOT EXISTS user(username TEXT NOT NULL, name TEXT NOT NULL, surname TEXT NOT NULL, password TEXT NOT NULL);")
13db.commit()
14db.close()
15
16
17mycolor = '#%02x%02x%02x' %(0, 173, 239)
18
19
20
21
22
23class Main:
24
25 def __init__(self, master):
26 # Window
27 self.master = master
28 # Some Usefull variables
29 self.username = tk.StringVar()
30 self.name = tk.StringVar()
31 self.surname = tk.StringVar()
32 self.password = tk.StringVar()
33 self.n_username = tk.StringVar()
34 self.n_password = tk.StringVar()
35 # Create Widgets
36 self.widgets()
37
38
39
40 # Login Function
41 def login(self):
42 # Establish Connection
43 with sqlite3.connect('my.db') as db:
44 c = db.cursor()
45
46 # Find user If there is any take proper action
47 find_user = ('SELECT * FROM user WHERE username = ? and password = ?')
48 c.execute(find_user, [(self.username.get()), (self.password.get())])
49 result = c.fetchall()
50 if result:
51 [x.destroy() for x in self.master.slaves()]
52 temp1 = tk.Label(self.master.geometry('250x125'), text='Hello ' + self.username.get())
53 temp2 = tk.Button(self.master, text='OK')
54 temp1.pack(), temp2.pack()
55 else:
56 ms.showerror('Oops!', 'Username Not Found.')
57
58 def new_user(self):
59 # Establish Connection
60 with sqlite3.connect('my.db') as db:
61 c = db.cursor()
62
63 # Find Existing username if any take proper action
64 find_user = ("SELECT DISTINCT username, name, surname FROM user WHERE VALUES = ?")
65 c.execute(find_user, [(self.n_username.get()), (self.name.get()), (self.surname.get())])
66 if c.fetchall():
67 ms.showerror('Error!', 'Username Taken Try a Diffrent One.')
68 else:
69 ms.showinfo('Success!', 'Account Created!')
70 self.log()
71 # Create New Account
72 insert = ("INSERT OR REPLACE INTO user (username, name, surname, password) VALUES(?)")
73 c.execute(insert, [(self.n_username.get()), (self.name.get()), (self.surname.get()) (self.n_password.get())])
74 db.commit()
75
76
77
78 def log(self):
79 self.username.set('')
80 self.password.set('')
81 self.crf.pack_forget()
82 self.head['text'] = 'LOGIN'
83 self.logf.pack()
84
85 def cr(self):
86 self.n_username.set('')
87 self.name.set('')
88 self.surname.set('')
89 self.n_password.set('')
90 self.logf.pack_forget()
91 self.head['text'] = 'Create Account'
92 self.crf.pack()
93
94 # Draw Widgets
95 def widgets(self):
96 self.head = tk.Label(self.master, text='LOGIN', font=('', 35), pady=10)
97 self.head.pack()
98 self.logf = tk.Frame(self.master, padx=10, pady=10)
99 tk.Label(self.logf, text='Username: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
100 tk.Entry(self.logf, textvariable=self.username, bd=5, font=('', 15)).grid(row=0, column=1)
101 tk.Label(self.logf, text='Password: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
102 tk.Entry(self.logf, textvariable=self.password, bd=5, font=('', 15), show='*').grid(row=1, column=1)
103 tk.Button(self.logf, text=' Login ', bd=3, font=('', 15), padx=5, pady=5, command=self.login).grid()
104 tk.Button(self.logf, text=' Create Account ', bd=3, font=('', 15), padx=5, pady=5, command=self.cr).grid(row=2,
105 column=1)
106 self.logf.pack()
107
108 self.crf = tk.Frame(self.master, padx=10, pady=10)
109 tk.Label(self.crf, text='Username: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
110 tk.Entry(self.crf, textvariable=self.n_username, bd=5, font=('', 15)).grid(row=0, column=1)
111 tk.Label(self.crf, text='Name: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
112 tk.Entry(self.crf, textvariable=self.name, bd=5, font=('', 15)).grid(row=1, column=1)
113 tk.Label(self.crf, text='Surname: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
114 tk.Entry(self.crf, textvariable=self.surname, bd=5, font=('', 15)).grid(row=2, column=1)
115 tk.Label(self.crf, text='Password: ', font=('', 20), pady=5, padx=5).grid(sticky='W')
116 tk.Entry(self.crf, textvariable=self.n_password, bd=5, font=('', 15), show='*').grid(row=3, column=1)
117 tk.Button(self.crf, text='Create Account', bd=3, font=('', 15), padx=5, pady=5, command=self.new_user).grid()
118 tk.Button(self.crf, text='Go to Login', bd=3, font=('', 15), padx=5, pady=5, command=self.log).grid(row=4,
119 column=1)
120
121
122if __name__ == '__main__':
123 root = tk.Tk()
124 root.title('Login Form')
125 Main(root)
126 root.mainloop()