ich habe ein Programm geschrieben, dass mit einer handelsüblichen webcam eine Bewegungserkennung durchführt. Wurde eine Bewegung erkannt wird über socket eine einfache nachricht an eine fest eingegebene IP versandt. Der Client epfängt diese und gibt eine Meldung auf der Konsole aus (dass beim Server eine Bewegung erkannt wurde). Nun soll dazu eine GUI entstehen, die erstmal nur ein Label hat, das je nachdem ob eine Nachricht eingeht oder eben nicht, in grün "Keine Bewegung" bzw. rot "Bewegung erkannt!" anzeigt. Aber ich komm nicht ganz mit dem Eventhandling von Tkinter mit. Hier der bisherige Code:
Code: Alles auswählen
import socket
import Image
import Tkinter
class GUIMotionDetectionClient(Tkinter.Frame):
def __init__(self, master = None):
Tkinter.Frame.__init__(self, master)
self.pack()
self.createWidgets()
self.checkStatus()
def createWidgets(self):
self.QUIT = Tkinter.Button(self)
self.QUIT["text"] = "ENDE"
self.QUIT["fg"] = "red"
self.QUIT["command"] = self.quit
self.QUIT.pack({"side": "left"})
self.status = Tkinter.Label(fg = "green", text="Keine Bewegung")
self.status.pack()
def checkStatus(self):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 50000))
s.listen(1)
try:
while True:
komm, addr = s.accept()
while True:
data = komm.recv(1024)
if not data:
komm.close()
break
self.status["fg"] = "red"
self.status["text"] = "Bewegung erkannt!"
finally:
s.close()
root = Tkinter.Tk()
app = GUIMotionDetectionClient(master=root)
app.mainloop()
root.destroy()