# model import socket class Model(object): def __init__(self): self.s = socket.socket() self.s.bind(('',12345)) self.s.listen(1) (self.c,self.a) = self.s.accept() def __del__(self): # schließt sicher die Schnittstelle self.s.close() self.c.close() # view from tkinter import * class View(Tk): def __init__(self,cbCTS,cbHalt): Tk.__init__(self) # Callbacks self.cbCTS = cbCTS self.protocol("WM_DELETE_WINDOW",cbHalt) # cbHalt wird aufgerufen, wenn das 'X' gedrückt wird # Fenster self.title("Empfänger") self.geometry('200x100+100+200') # Canvas self.c = Canvas(master=self,width=60,height=60) self.c.place(x=70,y=20) # Items item = self.c.create_oval(10,10,50,50,fill='#550000') self.c.itemconfig(item,tags=('LED')) # Timer starten self.after(0,self.poll) def poll(self): if self.cbCTS(): self.c.itemconfig('LED',fill='#ff0000') else: self.c.itemconfig('LED',fill='#550000') self.after(20,self.poll) # rekursiver Aufruf # controller class Controller(object): def __init__(self): self.model = Model() self.view = View(self.getLed,self.Halt) self.view.mainloop() def getLed(self): b = self.model.c.recv(1) print(b) return b[0] > 0 def Halt(self): # Aufräumarbeiten self.model.s.close() # Socket s schließen self.model.c.close() # Socket c schließen self.view.quit() # mainloop beenden self.view.destroy() # Fenster beseitigen # Hauptprogramm c = Controller()