# -*- coding: iso-8859-1 -*- # mk, 1.2.2010 # model class Model(object): def __init__(self,callback): self.OnChange = callback self.obj = None def set(self,wert): self.obj = wert # an entsprechenden Stellen OnChange aufrufen meldung = str(self.obj) if self.OnChange != None: self.OnChange(meldung) # view import tkinter class View(tkinter.Tk): def __init__(self): tkinter.Tk.__init__(self) # Callbacks self.OnWarte = None self.OnVerbinde = None self.OnSende = None self.OnBeende = None # Fenster self.title("Netzverbinder 0") self.geometry('640x200') # Radiobuttons self.rvar = tkinter.IntVar() self.rServer =tkinter.Radiobutton(master=self, text='Server', variable = self.rvar, value = 0) self.rServer.place(x = 20, y = 10) self.rClient =tkinter.Radiobutton(master=self, text='Client', variable = self.rvar, value = 1) self.rClient.place(x = 80, y = 10) # Entries self.eHost = tkinter.Entry(master=self) self.eHost.insert(0, 'www.hsg-kl.de') self.eHost.place(x=140, y=73, width=150) self.ePort = tkinter.Entry(master=self) self.ePort.insert(0, '80') self.ePort.place(x=310, y=73, width=30) # Buttons self.bWarte = tkinter.Button(master=self, text="warte") self.bindung = self.bWarte.bind('<1>',self.OnWarte) self.bWarte.place(x=20, y=40, width=100) self.bVerbinde = tkinter.Button(master=self, text="verbinde zu") self.bindung = self.bVerbinde.bind('<1>',self.OnWarte) self.bVerbinde.place(x=20, y=70, width=100) self.bSende = tkinter.Button(master=self, text="sende") self.bindung = self.bSende.bind('<1>',self.OnSende) self.bSende.place(x=20, y=100, width=100) self.bBeende = tkinter.Button(master=self, text="beende Verbindung") self.bindung = self.bBeende.bind('<1>',self.OnBeende) self.bBeende.place(x=20, y=160, width=100) # Labels self.lIp = tkinter.Label(master=self, text='ip') self.lIp.place(x=140, y=10) self.lVerbunden = tkinter.Label(master=self, text='verbunden', foreground='#ff0000',font=('Helvetica',16)) self.lVerbunden.place(x=140, y=35) self.lPort = tkinter.Label(master=self, text='port') self.lPort.place(x=310, y=40) self.lEmpfangen = tkinter.Label(master=self, text='empfangen') self.lEmpfangen.place(x=360, y=75) # Textfelder self.tSende = tkinter.Text(master=self) self.tSende.insert('1.0','GET /abc.html HTTP/1.1\n'+ 'Host: www.hsg-kl.de\n\n') self.tSende.place(x = 140, y = 100, width = 200, height = 80) self.tEmpfangen = tkinter.Text(master=self) self.tEmpfangen.place(x = 360, y = 100, width = 260, height = 80) def setOnWarte(self, callback): self.bWarte.unbind('<1>',self.bindung) self.bindung = self.bWarte.bind('<1>',callback) # controller class Controller(object): def __init__(self): self.view = View() self.view.setOnWarte(self.schreibe) self.model = Model(self.zeige) self.view.mainloop() def schreibe(self,event): wert = eval(self.view.eA.get()) self.model.set(wert) def zeige(self,meldung): self.view.lG.config(text=meldung) # Hauptprogramm c = Controller()