python鼠标事件点击小球变色 点击其他地方变回原来的颜色
时间: 2023-07-11 21:22:37 浏览: 93
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
好的,这是一个不错的进阶问题,我来给你详细说明一下实现方法。
首先,你需要对小球类进行一些修改,添加一个新的方法,该方法用于将小球的颜色设置为原始颜色。另外,当鼠标点击小球外时,你需要遍历所有的小球,并将它们的颜色设置为原始颜色。
下面是一个示例代码:
```python
from tkinter import *
import random
class Ball:
def __init__(self, canvas, x, y, size, color):
self.canvas = canvas
self.id = canvas.create_oval(x, y, x + size, y + size, fill=color)
self.color = color
self.original_color = color
canvas.tag_bind(self.id, "<Button-1>", self.change_color)
def change_color(self, event):
colors = ["red", "green", "blue", "yellow", "purple"]
new_color = random.choice(colors)
self.canvas.itemconfig(self.id, fill=new_color)
self.color = new_color
def reset_color(self):
self.canvas.itemconfig(self.id, fill=self.original_color)
self.color = self.original_color
class App:
def __init__(self, master):
self.master = master
self.canvas = Canvas(master, width=500, height=500)
self.canvas.pack()
self.balls = []
self.canvas.bind("<Button-1>", self.handle_click)
def handle_click(self, event):
x, y = event.x, event.y
for ball in self.balls:
if ball.id == self.canvas.find_withtag(CURRENT):
return
for ball in self.balls:
ball.reset_color()
self.balls.append(Ball(self.canvas, x, y, 30, "red"))
root = Tk()
app = App(root)
root.mainloop()
```
在这个示例中,我们修改了Ball类,添加了reset_color方法,该方法用于将小球的颜色设置为原始颜色。在App类中,我们修改了handle_click方法,当鼠标点击小球外时,我们遍历所有的小球,并将它们的颜色设置为原始颜色。然后,我们创建一个新的小球并将其添加到画布中。这样,当你点击小球时,它会更改颜色,当你点击其他地方时,所有的小球都会变回原来的颜色。
阅读全文