我们如何删除已经在 Tkinter 画布中创建的形状? [英] How do we delete a shape that's already been created in Tkinter canvas?

查看:45
本文介绍了我们如何删除已经在 Tkinter 画布中创建的形状?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑:

from Tkinter import *


a = Tk()

canvas = Canvas(a, width = 500, height = 500)
canvas.pack()

canvas.create_rectangle(0, 0, 100, 100)

我们如何删除这个创建好的矩形?

How do we delete this rectangle that's been created?

这是关于我正在创建的游戏.这是一个简单的游戏,如果球击中了方块,方块就会消失.但如果我这样做:

This is in reference to a game I am creating. It's a simple game where if the ball hits the block, the block should disappear. But if I do something like this:

class Block:
    def __init__(self,canvas,color):
        self.canvas = canvas
        self.id = canvas.create_rectangle(10, 10, 110, 20, fill=color )
        self.id1 = canvas.create_rectangle(115, 10, 215, 20, fill=color)
        self.id2 = canvas.create_rectangle(220, 10, 320, 20, fill=color)
        self.id3 = canvas.create_rectangle(325, 10, 425, 20, fill=color)
        self.id4 = canvas.create_rectangle(430, 10, 530, 20, fill=color)
        self.id5 = canvas.create_rectangle(100, 150, 200, 160, fill=color)
        self.id6 = canvas.create_rectangle(350, 150, 450, 160, fill=color)
        self.x = 0

然后:

    def hit_block(self,pos):
        block_pos = self.canvas.coords(self.block.id)
        List = [block_pos]
        for i in List:
            if pos[0] >= i[0] and pos[2] <= i[2]:
                if pos[1] >= i[1] and pos[1] <= i[3]:
                    canvas.delete(block.id)
                    self.score()
                    global a
                    a += 1
                    return True
        return False

它不起作用.球击中时如何删除块?

It doesn't work. How can I delete the block when the ball hits it?

推荐答案

create_rectangle() 赋值给一个变量,然后调用 canvas.delete() 在该变量上:

Assign the create_rectangle() to a variable, and then call canvas.delete() on that variable:

from Tkinter import *


a = Tk()

canvas = Canvas(a, width = 500, height = 500)
canvas.pack()

myrect = canvas.create_rectangle(0,0,100,100)
canvas.delete(myrect) #Deletes the rectangle

删除前的窗口:

删除后的窗口:

这篇关于我们如何删除已经在 Tkinter 画布中创建的形状?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆