Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- from threading import Thread
- import time
- from time import sleep
- from time import strftime
- import datetime
- from datetime import datetime
- import tkinter as tk
- from tkinter import ttk
- from queue import Queue
- import RPi.GPIO as GPIO
- import sys
- sys.path.append('/home/pi/MFRC522-python')
- from mfrc522 import SimpleMFRC522
- reader = SimpleMFRC522()
- LARGE_FONT= ("Verdana", 28)
- CLOCK_FONT= ("Verdana", 96)
- the_time=''
- TIME = newtime = time.time()
- class TimeClock(tk.Tk):
- def __init__(self, *args, **kwargs):
- tk.Tk.__init__(self, *args, **kwargs)
- container = tk.Frame(self)
- container.pack(side="top", fill="both", expand= True)
- container.grid_rowconfigure(0, weight=1)
- container.grid_columnconfigure(0, weight=1)
- self.frames = {}
- for F in (StartPage, PageOne, PageTwo):
- frame = F(container, self)
- self.frames[F] = frame
- frame.grid(row=0, column=0, sticky="nsew")
- self.show_frame(StartPage)
- def show_frame(self, cont):
- frame = self.frames[cont]
- frame.tkraise()
- def go(self):
- p = Backend(self.queue)
- p.start()
- self.after(100, self.check_queue)
- class StartPage(tk.Frame):
- def __init__(self, parent, controller):
- tk.Frame.__init__(self, parent)
- self.configure(background="darkblue")
- label = tk.Label(self, text="XCompany", font=LARGE_FONT, bg="darkblue", fg="yellow")
- label.pack(pady=10,padx=10)
- lblSwipe = tk.Label(self, text="Swipe Card", font=LARGE_FONT, bg="darkblue", fg="yellow")
- lblSwipe.pack(pady=10, padx=10)
- btnOtherFrame = tk.Button(self, text="RFID Scan Should Open Next Frame", command=lambda: controller.show_frame(PageTwo))
- btnOtherFrame.pack()
- self.status = tk.StringVar(self, value= "") #'.')
- tk.Label(self, textvariable=self.status,font=LARGE_FONT, fg="yellow", bg="Darkblue").place(x=600, y = 350 ,anchor = "s") #, anchor= "n")# pack(side="top")
- self.queue = Queue()
- self.go()
- def go(self):
- p = Backend(self.queue)
- p.start()
- self.after(100, self.check_queue)
- def check_queue(self):
- if not self.queue.empty():
- self.status.set(self.queue.get())
- if self.status.get() != 'done':
- self.after(100, self.check_queue)
- class PageOne(tk.Frame):
- def __init__(self, parent, controller):
- tk.Frame.__init__(self, parent)
- label = tk.Label(self, text="Page One", font=LARGE_FONT)
- label.pack(pady=10,padx=10)
- button1 = tk.Button(self, text="Back to Home", command=lambda: controller.show_frame(StartPage))
- button1.pack()
- button2 = tk.Button(self, text="Visit Page 2", command=lambda: controller.show_frame(PageTwo))
- button2.pack()
- class PageTwo(tk.Frame):
- def __init__(self, parent, controller):
- tk.Frame.__init__(self, parent)
- label = tk.Label(self, text="Page Two", font=LARGE_FONT)
- label.pack(pady=10,padx=10)
- button1 = tk.Button(self, text="Back to Home", command=lambda: controller.show_frame(StartPage))
- button1.pack()
- button2 = tk.Button(self, text="Vist Page 1", command=lambda: controller.show_frame(PageOne))
- button2.pack()
- class Backend(Thread):
- def __init__(self, queue, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.queue = queue
- def run(self):
- self.queue.put('')
- #for n in range(1, 100): Just have a loop to keep checking for input
- i = 1;
- while i == 1:
- print("Hold a tag near the reader")
- try:
- id, text = reader.read()
- print(id)
- print(text)
- strName = "Accepted: " + text[5:]
- #self.queue.put(text)
- self.queue.put(strName)
- sleep(1)
- strEmpNo = text[:4]
- print(strEmpNo)
- strEmpName =text[5:]
- strEmpName = strEmpName.strip()
- print(strEmpName)
- rawTime = time.time()
- print (rawTime)
- strRawTime = str(rawTime)
- current_time = strftime("%H:%M:%S")
- print (current_time)
- date_time = strftime("%m/%d/%Y")
- print(date_time)
- currentDT = strftime("%m/%d/%Y %H:%M:%S")
- strDate = str(currentDT)
- print (str(currentDT))
- #Save Data to MySQL DB
- sleep(2) # pause needed so we do not get multiple entry's
- self.queue.put('')
- #except:
- except Exception as e: print(e)
- #print("exception")
- self.queue.put('done')
- GPIO.cleanup()
- app = TimeClock()
- app.geometry("800x480")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement