from tkinter import * class Takistuskomponent: tegelikPinge=0 tegelikVool=0 klemm1x=100 klemm1y=50 klemm1d=20 def joonista(self, ala, ux, uy): self.ala=ala self.klemm1x=ux self.klemm1y=uy self.klemm1=ala.create_oval(self.klemm1x, self.klemm1y, self.klemm1x+self.klemm1d, self.klemm1y+self.klemm1d) self.tekst=ala.create_text(self.klemm1x, self.klemm1y, text=str(self.tegelikVool)) def muudaAsukoht(self, ux, uy): self.klemm1x=ux self.klemm1y=uy self.kuvaUuesti() def kuvaUuesti(self): self.ala.coords(self.klemm1, self.klemm1x, self.klemm1y, self.klemm1x+self.klemm1d, self.klemm1y+self.klemm1d) self.ala.coords(self.tekst, self.klemm1x, self.klemm1y) self.ala.itemconfigure(self.tekst, text="muudetud") def kysiTakistus(self): raise Exception("k2sku pole siin veel olemas") def muudaPinge(self, uusPinge): self.tegelikPinge=uusPinge self.tegelikVool=uusPinge/self.kysiTakistus() def muudaVool(self, uusVool): self.muudaPinge(uusVool*self.kysiTakistus()) def kysiPinge(self): return self.tegelikPinge def kysiVool(self): return self.tegelikVool class Takisti(Takistuskomponent): takistus=0 maksV6imsus=0 def __init__(self, takistus, maksV6imsus): self.takistus=takistus self.maksV6imsus=maksV6imsus def kysiTakistus(self): return self.takistus class Jadayhendus(Takistuskomponent): andmed=[] def lisaKomponent(self, uus): self.andmed.append(uus) def kysiTakistus(self): return sum([t.kysiTakistus() for t in self.andmed]) def muudaPinge(self, uusPinge): #super(Jadayhendus, self).muudaPinge(uusPinge) Takistuskomponent.muudaPinge(self, uusPinge) vool=self.kysiVool() for t in self.andmed: t.muudaVool(vool) def joonista(self, ala, ux, uy): Takistuskomponent.joonista(self, ala, ux, uy) algx=self.klemm1x algy=self.klemm1y if len(self.andmed)>0: for t in self.andmed: self.ala.create_line(algx, algy, t.klemm1x, t.klemm1y) algx=t.klemm1x algy=t.klemm1y print(algx, algy) self.ala.create_line(algx, algy, self.klemm1x, self.klemm1y) #Koosta Jadayhendusele k2sklus joonista n6nda, et k6igepealt n2idataks v2lja #jadayhenduse enese asukoht. Siis aga t6mmatakse jooned j2rjest k6ikide #yhenduses olevate komponentide vahele aken=Tk() ala=Canvas(aken) ala.pack() t=Takisti(5, 2) t2=Takisti(7, 2) j=Jadayhendus() j.lisaKomponent(t) #j.lisaKomponent(Takisti(3, 1)) j.lisaKomponent(t2) j.muudaPinge(10) print(str(j.kysiTakistus())+" "+str(j.kysiPinge())+" "+str(j.kysiVool())) print(str(t.kysiTakistus())+" "+str(t.kysiPinge())+" "+str(t.kysiVool())) t.joonista(ala, 100, 100) t2.joonista(ala, 100, 150) j.joonista(ala, 200, 100) t4=Takisti(10, 5) t4.muudaPinge(36) t4.joonista(ala, 250, 50) #j.muudaAsukoht(250, 100) aken.mainloop()