Mer grafik
from Tkinter import * root = Tk() mf = Frame(root) mf.pack() cv = Canvas(mf) o1 = cv.create_oval(100,100,80,80,outline="red",fill="blue", width=2) o2 = cv.create_oval(10,10,80,80,outline="red",fill="green", width=2) o3 = cv.create_oval(60,70,80,80,fill="yellow", width=1) p1 = cv.create_polygon(5,5,50,100,50,200,100,50,fill="",outline="black") l1 = cv.create_line(100,100,80,120,150,200) txt = cv.create_text(150,100,text="hello world",justify="left") cv.pack() root.mainloop()
http://infohost.nmt.edu/tcc/help/pubs/tkinter/index.html http://infohost.nmt.edu/tcc/help/pubs/tkinter/canvas.html
Objektorienterad programmering, Department of Computing Science, Umeå University - jem@cs.umu.se
Vilket problem löser man? Data abstraktion Namn Adress Adress Namn membernames = ['Kalle Anka','Knatte Anka','Tjatte Anka','Fnatte Anka'] membernames.sort() print membernames ['Fnatte Anka', 'Kalle Anka', 'Knatte Anka', 'Tjatte Anka']
Enheter Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress Namn Adress
Enheter
Enheter
Enheter
Begrepp Objektorienterad programmering Klasser Objekt
Python class Member: pass x = Member() x.name = 'Kalle Anka' x.email = 'kalle@ankeborg.se' y = Member() y.name = 'Tjatte Anka' y.email = 'tjatte@ankeborg.se' print x.name print x.email print y.name print y.email # Kalle Anka # kalle@ankeborg.se # Tjatte Anka # tjatte@ankeborg.se
Abstraktion class Member: def setname( self, newname ): self.name = newname def getname( self ): return self.name def set( self, new ): self.email = new def get( self ): return self.email x = Member() x.setname('kalle Anka') x.set('kalle@ankeborg.se') print x print x.getname() print x.get() print x.name print x.email
class Member: def setname( self, newname ): self._name = newname def name( self ): return self._name def set( self, new ): self._email = new def email( self ): return self._email x = Member() x.setname('kalle Anka') x.set('kalle@ankeborg.se') print x print x.name() print x.email() print x._name print x._email y = Member() print y.name() Traceback (most recent call last): File "x.py", line 70, in <module> print y.name() File "x.py", line 51, in name return self._name AttributeError: Member instance has no attribute '_name'
class Member: def init (self): self._name = '' self._email = '' ordf = Member() ordf.setname("kalle Anka") print ordf.name() def setname( self, newname ): self._name = newname def name( self ): return self._name def set( self, new ): self._email = new def email( self ): return self._email
class Member: def init (self, name, email): self._name = name self._email = email def setname( self, newname ): self._name = newname def name( self ): return self._name def set( self, new ): self._email = new def email( self ): return self._email ordf = Member("Kalle Anka",'kalle@ankeborg.se') print ordf.name() # Kalle Anka print ordf.email() # kalle@ankeborg.se
class Name: def init (self, first, last): self._first = first self._last = last def first(self): return self._first def last(self): return self._last def setfirst(self, first): self._first = first def setlast(self, last): self._last = last def firstlast( self ): return self._first + ' ' + self._last def lastfirst( self ): return self._last + ', ' + self._first
class Member: def init (self, name, email): self.setname(name) self._email = email def setname( self, newname ): [first,last] = newname.split() self._name = Name(first,last) def name( self ): return self._name.lastfirst() def set( self, new ): self._email = new def email( self ): return self._email x = Member("Kalle Anka",'kalle@ankeborg.se') print x.name() # Anka, Kalle
x = Member("Kalle Anka",'kalle@ankeborg.se') print x.name() # Anka, Kalle memberlist = [Member("Kalle Anka",'kalle@ankeborg.se')] memberlist.append( Member('Knatte Anka','knatte@ankeborg.se') ) memberlist.append( Member('Tjatte Anka','tjatte@ankeborg.se') ) memberlist.append( Member('Fnatte Anka','fnatte@ankeborg.se') ) print memberlist [< main.member instance at 0x100492e18>, < main.member instance at 0x100492ea8>, < main.member instance at 0x100492f38>, < main.member instance at 0x100492fc8>] for member in memberlist: print member.name() Anka, Kalle Anka, Knatte Anka, Tjatte Anka, Fnatte memberlist.sort() for member in memberlist: print member.name() Anka, Kalle Anka, Knatte Anka, Tjatte Anka, Fnatte
class Name:... def compare( self, other ): if self._last < other._last: return -1 elif self._last > other._last: return 1 else: if self._first < other._first: return -1 elif self._first == other._first: return 0 else: return 1 class Member:...... def compare( self, other ): return self._name.compare(other._name) def comparemembers( one, two ): return one.compare(two) memberlist = [Member("Kalle Anka",'kalle@ankeborg.se')] memberlist.append( Member('Knatte Anka','knatte@ankeborg.se') ) memberlist.append( Member('Tjatte Anka','tjatte@ankeborg.se') ) memberlist.append( Member('Fnatte Anka','fnatte@ankeborg.se') ) memberlist.sort(comparemembers) for member in memberlist: print member.name()