2014-05-16 19 views
3
from Tkinter import * 


a = Tk() 

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

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

現在我們該如何刪除這個已創建的矩形?我們如何刪除已經在Tkinter畫布中創建的形狀?

編輯:

這是參考我創建的遊戲。這是一個簡單的遊戲,如果球擊中了方塊,方塊應該消失。但是,如果我做了這樣的事情:

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 

它不工作。所以當球擊中它時,你能幫我刪除這個區塊嗎?

+1

http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.delete-method – atlasologist

+0

您是否閱讀過文檔?如何做到這一點是明確記錄。如果不是,爲什麼不呢?如果是這樣,你不明白它的一部分?如果是這種情況,告訴我們你不明白的部分,以便我們可以集中我們的幫助。 –

+1

這個問題似乎是脫離主題,因爲它可以通過閱讀官方文檔 – M4rtini

回答

9

分配create_rectangle()給一個變量,然後調用canvas.delete()該變量:

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 

窗口刪除前:

刪除後

Picture before deletion

窗口:

Picture after deletion

+0

解決,謝謝,這是我一直在尋找的東西,但現在,我編輯了我的問題,你能幫助我嗎? – Avinash12388

-1

基本上他說的只是添加一些if語句的座標,並插入A.J作爲if語句的結果輸​​入。

+0

我認爲它不起作用,因爲座標應該在一條線上一起串起來 –

相關問題