Advertisement
Guest User

Tkinter Login Screen

a guest
Oct 21st, 2018
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.32 KB | None | 0 0
  1. from tkinter import *
  2.  
  3. entry_design = {
  4.     'font': ("Helvetica", 11),
  5.     'insertbackground': '#ccc',
  6.     'highlightbackground': '#ccc',
  7.     'highlightcolor': '#ccc',
  8.     'relief': 'flat',
  9.     'bg': 'white',
  10.     'fg': '#333',
  11.     'bd': 3,
  12.     'width': 30,
  13. }
  14.  
  15. label_design = {
  16.     'font': ("Helvetica", 12),
  17.     'bg': '#3d3d3d',
  18.     'fg': '#eee'
  19. }
  20.  
  21. login_button_design = {
  22.     'highlightbackground': '#c0392b',
  23.     'activebackground': '#c0392b',
  24.     'activeforeground': 'white',
  25.     'relief': 'flat',
  26.     'bg': '#e74c3c',
  27.     'fg': 'white',
  28.     'bd': 0,
  29. }
  30.  
  31.  
  32. class LoginFrame(Frame):
  33.     def __init__(self, master=None, *args, **kwargs):
  34.         Frame.__init__(self, master=master, *args, **kwargs)
  35.  
  36.         self.configure(bg='#3d3d3d')
  37.         self.configure(border=40)
  38.  
  39.         user_var = StringVar()
  40.         pass_var = StringVar()
  41.  
  42.         user_var.set('Username')
  43.         pass_var.set('Password')
  44.  
  45.         image = PhotoImage(file='login_2.png')
  46.  
  47.         app_image = Label(self, **label_design, image=image)
  48.         app_image.grid(row=0, column=0, ipady=30)
  49.         app_image.image = image
  50.  
  51.         self.user_entry = Entry(self, name='user_entry', textvariable=user_var, **entry_design)
  52.         self.user_entry.bind('<FocusOut>', self.event_handler)
  53.         self.user_entry.bind('<FocusIn>', self.event_handler)
  54.         self.user_entry.grid(row=1, column=0, ipady=10)
  55.  
  56.         self.pass_entry = Entry(self, name='pass_entry', textvariable=pass_var, **entry_design)
  57.         self.pass_entry.bind('<FocusOut>', self.event_handler)
  58.         self.pass_entry.bind('<FocusIn>', self.event_handler)
  59.         self.pass_entry.grid(row=2, column=0, ipady=10)
  60.  
  61.         self.info_var = StringVar()
  62.         info_label = Label(self, textvariable=self.info_var, fg='orange')
  63.         info_label.grid(row=3, column=0, sticky=EW, pady=5)
  64.         info_label.configure(bg='#3d3d3d')
  65.  
  66.         login_button = Button(self, text='Login')
  67.         login_button.grid(row=4, column=0, pady=4, sticky=E, ipadx=30, ipady=6)
  68.         login_button.configure(command=self.check_credentials)
  69.         login_button.configure(**login_button_design)
  70.  
  71.     def check_credentials(self):
  72.         username = self.user_entry.get()
  73.         password = self.user_entry.get()
  74.  
  75.         if username and password is not None or '':
  76.             if username == 'admin' and password == 'admin':
  77.                 self.hide_login()
  78.                 return True
  79.  
  80.             self.info_var.set("Wrong username or password")
  81.             self.after(3000, self.info_var.set, '')
  82.             return False
  83.  
  84.     @staticmethod
  85.     def event_handler(event):
  86.         if str(event.type) is 'FocusIn':
  87.             event.widget.delete(0, 'end')
  88.             if str(event.widget).endswith('pass_entry'):
  89.                 event.widget.configure(show='*')
  90.                 return None
  91.             return None
  92.  
  93.         if str(event.type) is 'FocusOut':
  94.             if event.widget.get() is '':
  95.                 if str(event.widget).endswith('user_entry'):
  96.                     event.widget.insert('end', 'Username')
  97.                     return None
  98.  
  99.                 if str(event.widget).endswith('pass_entry'):
  100.                     event.widget.configure(show='')
  101.                     event.widget.insert('end', 'Password')
  102.                     return None
  103.                 return None
  104.             return None
  105.  
  106.     def show_login(self):
  107.         self.master.logout_button.grid_forget()
  108.         self.grid(row=0, column=0, sticky=NS)
  109.  
  110.     def hide_login(self):
  111.         self.master.logout_button.grid(row=0, column=0, sticky=N)
  112.         self.grid_forget()
  113.  
  114.  
  115. class MainWindow(Frame):
  116.     def __init__(self, master=None, *args, **kwargs):
  117.         Frame.__init__(self, master=master, *args, **kwargs)
  118.  
  119.         self.configure(bg='#3d3d3d', bd=20)
  120.  
  121.         self.loginFrame = LoginFrame(master=self)
  122.         self.loginFrame.grid(row=0, column=0, sticky=NS)
  123.         self.columnconfigure(0, weight=1)
  124.         self.rowconfigure(0, weight=1)
  125.  
  126.         self.logout_button = Button(self, text='Logout')
  127.         self.logout_button.configure(command=self.loginFrame.show_login)
  128.  
  129.         self.pack(fill='both', expand=True)
  130.  
  131.  
  132. if __name__ == '__main__':
  133.     mainWindow = MainWindow()
  134.     mainWindow.master.title('User Manager')
  135.     mainWindow.master.geometry('1040x580')
  136.     mainWindow.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement