Advertisement
Guest User

GUI Login

a guest
Aug 16th, 2017
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.39 KB | None | 0 0
  1. #filename : login.py
  2. #python version : 3.6.2
  3.  
  4. from tkinter import *
  5. from tkinter import ttk
  6. import sqlite3
  7. import hashlib
  8. import os
  9. import time
  10.  
  11. LFont=("Verdana", 12)
  12. MFont=("Verdana", 10)
  13. SFont=("Verdana", 8)
  14.  
  15. class GUILogin(Tk):
  16.  
  17.     def __init__(self, *args, **kwargs):
  18.         Tk.__init__(self, *args, **kwargs)
  19.  
  20.         utama = Frame(self)
  21.         utama.pack(side=TOP, fill=BOTH, expand=True)
  22.  
  23.  
  24.  
  25.         self.frames = {}
  26.  
  27.         for F in (LoginPage, RegisterPage):
  28.  
  29.             frame = F(utama, self)
  30.  
  31.             self.frames[F] = frame
  32.  
  33.             frame.grid(row=0, column=0, sticky=NSEW)
  34.  
  35.         self.show_frame(LoginPage)
  36.  
  37.     def show_frame(self, cont):
  38.         frame = self.frames[cont]
  39.         frame.tkraise()
  40.  
  41.     def Login(self):
  42.  
  43.         username = nameL.get()
  44.         password = passL.get()
  45.  
  46.         c.execute('SELECT * FROM passwords WHERE username = ? AND password = ?', (username, hasher(password)))
  47.  
  48.         if c.fetchone() is not None:
  49.             print("\n [+] Logged In.\n\nWelcome {}\n".format(username))
  50.  
  51.         else:
  52.             print("\n [!] Invalid Login.\n")
  53.             time.sleep(1.5)
  54.             self.show_frame(LoginPage)
  55.  
  56.     def Register(self):
  57.  
  58.         username = nameE.get()
  59.         password = passE.get()
  60.  
  61.         c.execute("INSERT INTO passwords VALUES('{}', '{}')".format(username, hasher(password)))
  62.         con.commit()
  63.  
  64.         self.show_frame(LoginPage)
  65.  
  66.  
  67.     def hasher(self, string):
  68.         return hashlib.sha1(string.encode()).hexdigest()
  69.  
  70.     def makeDB(self):
  71.         global con
  72.         global c
  73.         con = sqlite3.connect(DB)
  74.         c = con.cursor()
  75.  
  76.         c.execute("CREATE TABLE IF NOT EXISTS passwords(username TEXT, password TEXT")
  77.  
  78.         return c
  79.  
  80.  
  81. class LoginPage(Frame):
  82.  
  83.     def __init__(self, parent, controller):
  84.         Frame.__init__(self, parent)
  85.  
  86.         intro = Label(self, text="Login GUI", font=LFont)
  87.         intro.grid()
  88.  
  89.         nameL = Label(self, text="Username: ", font=SFont)
  90.         passL = Label(self, text="Password : ", font=SFont)
  91.         nameL.grid(row=1, sticky=W)
  92.         passL.grid(row=2, sticky=W)
  93.  
  94.         nameE = ttk.Entry(self)
  95.         passE = ttk.Entry(self, show="*")
  96.         nameE.grid(row=1, column=1)
  97.         passE.grid(row=2, column=1)
  98.  
  99.         button = ttk.Button(self, text="Login", command=lambda: GUILogin.Login)
  100.         button.grid(row=3)
  101.  
  102.         button1 = ttk.Button(self, text="Register", command=lambda:controller.show_frame(RegisterPage))
  103.         button1.grid(row=3, column=1)
  104.  
  105.  
  106.  
  107. class RegisterPage(Frame):
  108.  
  109.     def __init__(self, parent, controller):
  110.         Frame.__init__(self, parent)
  111.  
  112.         intro = Label(self, text="Register", font=LFont)
  113.         intro.grid()
  114.  
  115.         nameL = Label(self, text="Username: ", font=SFont)
  116.         passL = Label(self, text="Password: ", font=SFont)
  117.         nameL.grid(row=1, sticky=W)
  118.         passL.grid(row=2, sticky=W)
  119.  
  120.         nameE = Entry(self)
  121.         passE = Entry(self, show="*")
  122.         nameE.grid(row=1, column=1)
  123.         passE.grid(row=2, column=1)
  124.  
  125.         button= ttk.Button(self, text="Register", command=GUILogin.Register)
  126.         button.grid(row=3)
  127.  
  128.         button1 = ttk.Button(self, text="Cancel", command=lambda: controller.show_frame(LoginPage))
  129.         button1.grid(row=3, column=1)
  130.  
  131.  
  132. app = GUILogin()
  133. app.title('Login')
  134. app.geometry('300x150')
  135. app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement