0
我一直在修补一个python问题,我使用tkinter在tkinter上应用canvas.delete(args)时使用图画,没有任何反应。我使用print语句来帮助调试项目id看起来与创建物品时使用的相同,请协助。 这里是我的代码部分Tkinter画布无法删除项目
lst = []
lst1 = []
lst2 = []
class A1:
def __init__(self, master):
self.canvas_width = 700
self.canvas_height = 400
master.title("A1 - StudentUPI")
geometry_string = str(self.canvas_width)+"x"+str(self.canvas_height)+"+10+20"
master.geometry(geometry_string)
self.a_canvas = Canvas(root)
self.a_canvas.config(background="SlateBlue1")
self.a_canvas.pack(fill=BOTH, expand = True)
self.create_button()
self.coord = RandRegion.RandRegion(self.canvas_width,self.canvas_height)
def create_button(self):
self.frame = Frame(root, bg='grey', width=700, height=40)
self.frame.pack(fill='x')
self.button1 = Button(self.frame, text='Add Rect', command=self.randRect)
self.button1.pack(side='left')
self.button2 = Button(self.frame, text='Remove Rect', command=self.remRec)
self.button2.pack(side='left')
self.button3 = Button(self.frame, text='Add Circle', command=self.randCircle)
self.button3.pack(side='left')
self.button4 = Button(self.frame, text='Remove Circle', command=self.remCir)
self.button4.pack(side='left')
self.button5 = Button(self.frame, text='Add Arc', command=self.randArc)
self.button5.pack(side='left')
self.button6 = Button(self.frame, text='Remove Arc', command=self.remArc)
self.button6.pack(side='left')
self.button7 = Button(self.frame, text='Remove Red Shapes', command=self.remRed)
self.button7.pack(side='left')
def randRect(self):
coord = RandRegion.RandRegion(self.canvas_width,self.canvas_height).get_coord()
color = RandRegion.RandRegion(self.canvas_width,self.canvas_height).get_color()
lst.append([coord,color])
self.a_canvas.create_rectangle(coord,fill=color)
print(coord)
def randCircle(self):
coord = RandRegion.RandRegion(self.canvas_width,self.canvas_height).get_coord()
color = RandRegion.RandRegion(self.canvas_width,self.canvas_height).get_color()
lst1.append([coord,color])
self.a_canvas.create_oval(coord,fill=color)
print(lst1)
def randArc(self):
coord = RandRegion.RandRegion(self.canvas_width,self.canvas_height).get_coord()
color = RandRegion.RandRegion(self.canvas_width,self.canvas_height).get_color()
lst2.append([coord,color])
self.a_canvas.create_arc(coord, start=0, extent=90,fill=color)
print(lst2)
def remRec(self):
self.a_canvas.delete(str(lst[random.randrange(len(lst))][0]))
print((lst[random.randrange(len(lst))][0]))
def remCir(self):
self.a_canvas.delete(str(lst1[random.randrange(len(lst1))][0]))
def remArc(self):
self.a_canvas.delete(lst2[random.randrange(len(lst2))][0])
def remRed(self):
new_lis = lst
for x in range(len(new_lis)):
if 'red' in (new_lis[x]):
print(new_lis[x][0])
self.a_canvas.delete(new_lis[x][0])
print(lst,lst1,lst2)
root = Tk()
app = A1(root)
root.mainloop()
`
谢谢,我终于想通了这一点 – dmn8