как стереть ранее созданный холст? - PullRequest
0 голосов
/ 07 мая 2020

Я создаю игру с броском кубиков, в которой мне нужно собрать кубик кубика. На холсте есть кнопка, когда я нажимаю, она должна генерировать точку. Мой вопрос в том, как я могу стереть точку, потому что они просто накладываются друг на друга. Например, если roll_ 1 = 3, он сгенерирует точку с 3 точками на нем, когда я снова щелкну по нему, скажем 4, они просто перекрываются друг с другом. Я хочу, чтобы трехмерные объекты были удалены до того, как будет сгенерировано 4.

from tkinter import *
import random
class Pip:
    def __init__(self, x,y,color='black'):
        self.x = x
        self.y = y
        self.color = color

    def draw(self):
        self.dot = canvas.create_oval(self.x-5, self.y-5, self.x+5,self.y +5, fill = self.color)

    def erase(self):
        canvas.delete(self.dot)
        canvas.update()


class Show6:
    def __init__(self, x,y,color = 'black'):
        self.x = x
        self.y = y
        self.color = color
        self.pip1 = Pip(self.x-15,self.y-15,self.color)
        self.pip2 = Pip(self.x-15, self.y+15, self.color)
        self.pip3 = Pip(self.x-15, self.y, self.color)
        self.pip4 = Pip(self.x+15, self.y-15, self.color)
        self.pip5 = Pip(self.x+15, self.y+15, self.color)
        self.pip6 = Pip(self.x+15, self.y, self.color)
    def draw(self):
        self.pip1.draw()
        self.pip2.draw()
        self.pip3.draw()
        self.pip4.draw()
        self.pip5.draw()
        self.pip6.draw()
    def erase(self):
        self.pip1.erase()
        self.pip2.erase()
        self.pip3.erase()
        self.pip4.erase()
        self.pip5.erase()
        self.pip6.erase()
def rollDice():

    roll_1 = random.randint(1,6)
    if roll_1 == 1:
        pip1.draw()

    elif roll_1 == 2:
        die1Show2.draw()
    elif roll_1 == 3:
        die1Show3.draw()
    elif roll_1 == 4:
        die1Show4.draw()
    elif roll_1 == 5:
        die1Show5.draw()

    else:
        die1Show6.draw()


root = Tk()
button = Button(root, text='Roll Dice', command=rollDice, activeforeground='green').pack(fill=X)
canvas = Canvas(root,width=300,height=300)
canvas.pack(side='top')
die1 = canvas.create_rectangle(25,25,75,75)
pip1 = Pip(50,50,'red')
die1Show2 = Show2(50,50,'green')
die1Show3 = Show3(50,50,'black')
die1Show4 = Show4(50,50,'blue')
die1Show5 = Show5(50,50,'yellow')
die1Show6 = Show6(50,50,'pink')
...