Ugyanaz a feladat, de egy olyan probléma, amit nem tudok hova tenni.
from tkinter import*
def circle(can,x,y,r,color="white"):
"A <can> vásznon egy <r> sugarú kör rajza <x,y>-ban."
can.create_oval(x-r,y-r,x+r,y+r,outline=color)
class Application(Frame):
def __init__(self,master=None):
Frame.__init__(self) #szülőosztály constructor
#self.master = master #ezt muszáj volt inaktívvá tenni, mert nem engedte bezárni a főablakot
self.pack()
#Példány attribútomok inicializálása:
self.canv=Canvas(height=400,width=400,bg='white')
self.canv.pack(side=TOP,padx=5,pady=5)
self.face=Visage(self.canv)
Button(self,text="Open", command=self.face.open).pack(side=RIGHT)
Button(self,text="Close", command=self.face.close).pack(side=RIGHT)
class Visage:
"""Arc rajzoló osztály"""
def __init__(self,canv_):
self.canv=canv_
circle(canv_,200,200,150,color="black") #fej
circle(canv_,160,160,30,color="black") #bal szem
circle(canv_,160,160,10,color="black")
circle(canv_,240,160,30,color="black") #jobb szem
circle(canv_,240,160,10,color="black")
circle(canv_,200,200,20,color="black") #orr
self.mouth=0 #száj
def open(self):
self.canv.delete(self.mouth) #törlés
self.mouth=circle(self.canv,200,270,30,color="black")
def close(self):
self.canv.delete(self.mouth) #törlés, de valamiért nem törli!!!
self.mouth=self.canv.create_line(170,270,230,270,fill='black')
Az open metódus működik rendesen, de a close nem.
Arra tudok gondolni, hogy valamiért nem működik a delete metódus és az open() csak elfedi a vízszintes vonalat, de nem törli.
Az működne ha letörölném az egész vásznat és újrarajzolnám az arcot is, de szerintem ennek is kellene működnie.
Már órák óta ezen agyalok, de nem jutok dűlőre.