使用turtle模块绘制四个按钮,要求实现以下功能:按钮初始状态为蓝色。当点击任意一个按钮时,该按钮变为红色,其他按钮保持为蓝色。如果点击屏幕上的非按钮区域,所有按钮重置为蓝色。请编写完整代码实现上述功能,并确保程序能够响应鼠标点击事件。
时间: 2024-10-23 17:18:56 浏览: 16
在Python中,我们可以使用`turtle`模块结合`onclick`函数来实现这个需求。首先,我们需要导入`turtle`模块并创建一个窗口,然后定义每个按钮的位置和颜色。这里是一个简单的示例:
```python
import turtle
# 创建窗口和画笔
window = turtle.Screen()
btn_size = 50
pen = turtle.Turtle()
pen.speed(0)
pen.color("blue")
# 定义按钮位置和颜色
button_positions = [(0, -btn_size), (btn_size * 2, -btn_size), (-btn_size, btn_size * 2), (btn_size * 2, btn_size * 2)]
button_colors = ["blue"] * 4
def button_click(x, y):
for i in range(4):
if abs(x - button_positions[i][0]) < btn_size and abs(y - button_positions[i][1]) < btn_size:
pen.penup()
pen.goto(button_positions[i])
pen.pendown()
pen.fillcolor(button_colors[i])
pen.begin_fill()
pen.circle(btn_size)
pen.end_fill()
pen.color("red")
break
else:
# 如果点击的是非按钮区域,重置所有按钮
for pos, color in zip(button_positions, button_colors):
pen.penup()
pen.goto(pos)
pen.pencolor(color)
pen.fillcolor(color)
pen.begin_fill()
pen.circle(btn_size)
pen.end_fill()
# 绑定鼠标点击事件
for pos in button_positions:
window.onclick(lambda x, y: button_click(x, y), pos)
# 开始主循环
turtle.done()
```
在这个代码里,我们首先设置好按钮的位置和初始颜色为蓝色。然后定义了一个`button_click`函数,当鼠标点击时判断点击位置是否在任何一个按钮上,如果是,则改变对应按钮的颜色为红色;如果不是按钮区域,则将所有按钮恢复为蓝色。
运行这段代码后,你应该能看到四个蓝色的圆形按钮,点击其中一个会变红,而其他按钮保持蓝色。如果鼠标点击屏幕其他地方,所有按钮都会重置为蓝色。
阅读全文