ich bin gerade bei den Anfängen mit Python und tkinter. Ich habe folgendes realisiert:
Einen RFID Reader an meinen Raspberry angeschlossen.
In der Datei "ausgelagert.py" dort habe ich alle Funktionen definiert die ich für das "tagreadGUI.py" benötige und importiere es entsprechend.
Sobald ich jetzt das tagreadGUI ausführe wird das Fenster geöffnet und sobald ich auf "kommen!" (Button) drücke wartet das Programm darauf dass der RFID TAG vor den Leser gehalten wird. Halte ich den RFID Leser davor, schreibt die Funktion writeuserEIN (bzw. writeuserAUS) die Daten in die MySQL.
Und dann erscheint ein zweites Fenster mit der Meldung das der RFID Tag eingelesen wurde und nach 5 Sek. schliesse ich das Fenster automatisch.
Alles soweit gut ich habe dann nur foglendes Problem (da ich ein Touchscreen verwende) bleibt der cursor auf dem "Button" stehen und ändert somit seine Farbe nicht wieder in die Ursprungsfarbe.
Frage 1.) Gibt es hier eine Möglichkeit die Ihr kennt die Farbe zu setzen oder den Cursor nach der Ausführung an einen gewissen Punkt zu setzen (z.B. rechts an den Rand)?
Frage 2.) Oder gibt es eine Möglichkeit zwei Funktionen an einen "Button Klick" zu binden?
Frage 3.) Mein anderer Lösungsansatz (optimal Variante) wäre: Das erst nach dem öffnen des zweiten Fensters der RFID TAG ausgelesen wird und dann das Label den Text ändert sobald die ID ermittelt wurde und der Datensatz in die MySQL geschrieben wurde.
Ich hoffe das ist verständlich beschrieben und ihr könnt mir evtl. paar Tips geben?
ausgelagert.py:
Code: Alles auswählen
import serial
import MySQLdb
import sys
import time
import datetime
from operator import xor
# Auslesen der RFID-Transponder
def read_rfid():
ser = serial.Serial("/dev/serial0")
ser.baudrate = 9600
daten = ser.read(14)
ser.close()
daten = daten[2:10]
return daten
class DB():
def __init__(self):
db = MySQLdb.connect(host="localhost", user="***",
passwd="****", db="*****")
db.autocommit(True)
self.cur = db.cursor()
def close_db( self ):
self.cur.close()
# RFID Daten plus Staus und timestamp in die DB sschreiben
def writeuserEIN():
id = read_rfid()
status = 1
timestamp = time.time()
timestamp = datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
db = DB()
addone = "INSERT INTO user (rfid, status, timestamp) VALUES (%s,%s,%s)"
db.cur.execute(addone, (id, status, timestamp))
db.close_db()
def writeuserAUS():
id = read_rfid()
status = 0
timestamp = time.time()
timestamp = datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
db = DB()
addone = "INSERT INTO user (rfid, status, timestamp) VALUES (%s,%s,%s)"
db.cur.execute(addone, (id, status, timestamp))
db.close_db()
Code: Alles auswählen
from ausgelagert import *
import sys
from Tkinter import *
import tkFont
import sys
import os
def r():
uno = writeuserEIN()
def c():
fenster1 = Tk()
fenster1.title("RFID READ!!!")
fenster1.attributes('-fullscreen', True)
fenster1.config(cursor="none")
lab = Label(fenster1, bg='lightgreen', text="RFID\n TAG\n wurde\n erfolgreich\n eingelesen!", font=("Helvetica", 35))
lab.pack()
fenster1.event_generate('<Motion>', warp=True, x=438, y=50)
def beenden():
fenster1.destroy()
fenster1.after(5000, beenden)
lbl1 = Label(fenster, text="RFID TAG vor das Geraet halten!", bg='lightgreen')
lbl1.pack()
ro = c()
def d():
due = writeuserAUS()
def c():
fenster1 = Tk()
fenster1.title("RFID READ!!!")
fenster1.attributes('-fullscreen', True)
fenster1.config(cursor="none")
lab = Label(fenster1, bg='lightgreen', text="RFID\n TAG\n wurde\n erfolgreich\n eingelesen!", font=("Helvetica", 35))
lab.pack()
def beenden():
fenster1.destroy()
fenster1.after(5000, beenden)
fenster = Tk()
myFont = tkFont.Font(family = 'Helvetica', size = 55, weight = 'bold')
fenster.title("CIAO!!!")
fenster.attributes('-fullscreen', True)
fenster.config(cursor="none")
but1 = Button(fenster, text="KOMMEN!", font = myFont, command=r)
but1.pack()
but1.configure(background='green')
but1.config(activebackground='yellow')
but2 = Button(fenster, text="GEHEN!", font = myFont, command=d)
but2.pack()
but2.configure(background='red')
but2.config(activebackground='yellow')
but3 = Button(fenster, text = "Exit", font=("Helvetica", 30), command = fenster.quit)
but3.pack()
but3.configure(background='blue')
but3.config(activebackground='green')
fenster.mainloop()