我试图用python2让一个装满气球的窗口一个接一个地消失(点击它),但是我有点搞不清楚我在哪里可以捕捉到我的鼠标事件,在这一刻,我没有点击任何东西,代码是附加的。我的灵感来自以下代码: http://effbot.org/zone/tkinter-canvas-find-withtag.htm, 但我要自己安排。你知道吗
我有点搞不清楚Python类、属性和事件是如何关联的。谢谢你的建议
class Baloons:
def __init__(self,wdw, dimension):
self.canvas= Canvas(wdw, width=dimension, height=dimension)
self.canvas.pack()
self.update(self.canvas)
self.click2(self.canvas)
def click2(event, canvas):
if canvas.find_withtag(CURRENT):
canvas.itemconfig(CURRENT, state="hidden")
canvas.update_idletasks()
canvas.after(200)
canvas.delete("all")
canvas.itemconfig(CURRENT, fill="red")
self.update(canvas)
self.click1(canvas)
def update(self,canvas):
for i in range(200):
x, y = randint(0, 400-1), randint(0, 400-1)
canvas.create_oval(x-5, y-5, x+5, y+5, fill="red")
def click1(self,canvas):
canvas.bind("<Button-1>", click2(canvas))
if __name__ == "__main__":
root=Tk()
dimension = 200
b=Baloons(root,dimension,delay)
root.mainloop()
这不是你的代码要做的。你的代码隐藏它,破坏一切,试图配置你破坏的东西,然后重新创建新的对象。你知道吗
要回答如何通过单击气球使其消失的问题,您可以扔掉大约四分之一的代码。你知道吗
下面是一个工作示例。大多数情况下,我只是重新实现了
click2
,以删除与删除光标下的项无关的所有代码。我还删除了click1
,因为我认为没有任何理由将绑定放在函数中。您只需要设置绑定一次。你知道吗我还消除了传递
canvas
的需要。因为您使用的是对象,所以每个方法都已经有了访问画布的方法。你知道吗相关问题 更多 >
编程相关推荐