我已經在這裏問過類似的問題,我收到了很有幫助的回覆。 但是從那以後我修改了我的代碼,現在它更加優化了,我想它應該更靈活,但同樣的問題仍然存在。我無法刪除該類的一個實例。刪除類的一個實例
我想要做的是創建一個圓(左鍵單擊),然後我希望程序刪除該圓(右鍵單擊)。
My code:
from tkinter import *
class Application:
def __init__(self):
self.fen = Tk()
self.fen.title('Rom-rom-roooooom')
self.butt1 = Button(self.fen, text = ' Quit ', command = self.fen.quit)
self.can1 = Canvas(self.fen, width = 300, height = 300, bg = 'ivory')
self.can1.grid(row = 1)
self.butt1.grid(row = 2)
self.fen.bind("<Button-1>", self.create_obj)
self.fen.bind("<Button-3>", self.delete_obj)
self.fen.mainloop()
def create_obj(self, event):
self.d = Oval()
self.can1.create_oval(self.d.x1, self.d.y1, self.d.x2, self.d.y2, fill='red', width = 2)
def delete_obj(self, event):
self.can1.delete(self.d)
class Oval:
def __init__(self):
self.x1 = 50
self.y1 = 50
self.x2 = 70
self.y2 = 70
appp = Application()
所以,再一次,問題是,在這裏我不能刪除對象:
def delete_obj(self, event):
self.can1.delete(self.d)
一個問題。鑑於我只是一個成員,我不知道我是否就班級組織而言選擇了正確的方法。它看起來像是一個組織良好的代碼,還是應該在這個階段改變任何東西?
我明白了。我應該將創建圓的方法替換爲OVAL類嗎?然後從Application類引用它? – 2014-10-17 12:38:47
我不明白你遵循什麼邏輯。您可以創建自己的類「Oval」的實例,並行地創建另一個tkinter對象。你從來沒有在'can1'上放置'self.d'。你需要什麼「橢圓形」? – luk32 2014-10-17 12:38:53