Hirdetés

Új hozzászólás Aktív témák

  • cadtamas

    tag

    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.

Új hozzászólás Aktív témák