当前位置:首页>python>小学生Python进阶:turtle第10课·鼠标画笔

小学生Python进阶:turtle第10课·鼠标画笔

  • 2026-10-11 08:19:28
小学生Python进阶:turtle第10课·鼠标画笔

上节课学了键盘控制海龟。这节课换成鼠标——点哪画哪,拖哪画哪,像用画图软件一样!

一、onclick:鼠标点击

每次点击鼠标,turtle 会告诉你点击位置的坐标 (x, y),你决定怎么画!

import turtle

screen = turtle.Screen()
t = turtle.Turtle()
t.speed(5)
t.pensize(3)

# 点击哪里,海龟就游到哪里并画圆圈
def draw_circle(x, y):
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.begin_fill()
    t.circle(15)
    t.end_fill()

screen.onclick(draw_circle)    # 绑定鼠标点击事件
screen.exitonclick()           # 点击窗口退出

👆 点击屏幕任意位置,就会出现一个填充圆!可以画一朵圆形花🌸

二、实战:鼠标连点画图 🖱️

import turtle, random

screen = turtle.Screen()
screen.setup(800, 600)

t = turtle.Turtle()
t.speed(5)
t.pensize(3)
t.pendown()
t.pencolor("green")

# 每次点击,海龟游过去并画线(连成轨迹)
def move_to(x, y):
    t.goto(x, y)

screen.onclick(move_to)
screen.exitonclick()

# 试试点几个点,连起来就是你的图案!

三、ondrag:鼠标拖拽 🖌️

ondrag 比 onclick 更实用——按住鼠标拖动,一边拖一边画,像画图软件一样!

import turtle

screen = turtle.Screen()
t = turtle.Turtle()
t.speed(5)
t.pensize(3)
t.pencolor("navy")
t.pendown()

# 拖动鼠标,海龟跟着画线
def draw(x, y):
    t.goto(x, y)

t.ondrag(draw)        # ondrag 比 onclick 更实用:边拖边画!
screen.exitonclick()

# 按住鼠标随便拖,画出你的图案!

💡 ondrag 让海龟在鼠标按住并移动的过程中持续画线,非常适合自由绘画!

四、实战:完整画图板(鼠标+键盘组合) 🎨

import turtle

screen = turtle.Screen()
screen.setup(800, 600)

t = turtle.Turtle()
t.speed(5)
t.pensize(3)
t.pencolor("black")
t.pendown()

COLORS = ["black","red","orange","green","blue","purple","white"]
ci = 0
eraser = False

def draw(x, y):
    if eraser:
        t.color("white", "white")
        t.pensize(20)
    else:
        t.color(COLORS[ci], COLORS[ci])
        t.pensize(3)
    t.goto(x, y)

def up():   t.penup()
def down(): t.pendown()

def next_color():
    global ci
    ci = (ci + 1) % len(COLORS)

def prev_color():
    global ci
    ci = (ci - 1) % len(COLORS)

def toggle_eraser():
    global eraser
    eraser = not eraser

def clear(): t.clear()

t.ondrag(draw)
screen.onkey(up, 'Up')
screen.onkey(down, 'Down')
screen.onkey(next_color, 'Right')
screen.onkey(prev_color, 'Left')
screen.onkey(toggle_eraser, 'space')
screen.onkey(clear, 'c')
screen.listen()
screen.exitonclick()

五、onclick 和 ondrag 参数说明

# onclick:鼠标点击事件
screen.onclick(函数名)               # 默认左键(btn=1)
screen.onclick(函数名, btn=3)        # btn=2中键 btn=3右键

# ondrag:鼠标拖拽事件
t.ondrag(函数名)                     # 拖动时持续触发

# 重要:函数要有 (x, y) 两个参数!
def my_func(x, y):
    print(f"坐标:({x}, {y})")

六、实战:几何图案生成器 🟥🟩🟦

import turtle, random

screen = turtle.Screen()
screen.setup(700, 500)

t = turtle.Turtle()
t.speed(8)
t.pensize(2)

colors = ["red", "orange", "yellow", "green", "blue", "purple"]

# 画一个六边形
for i in range(6):
    t.pencolor(random.choice(colors))
    t.forward(100)
    t.right(60)

# 画多个叠加六边形(随机位置)
for _ in range(5):
    x = random.randint(-200, 200)
    y = random.randint(-150, 150)
    t.penup()
    t.goto(x, y)
    t.pendown()
    for i in range(6):
        t.pencolor(random.choice(colors))
        t.forward(60)
        t.right(60)

screen.exitonclick()

点击任意位置画随机图案,ondrag 拖出你的手绘轨迹,试试吧!

七、小挑战

  • 🟢 简单:用 onclick 做一个"点击画星星"——每个点击位置画一颗五角星
  • 🟡 中等:在画图板里加"画圆模式"和"画方模式"切换(按 R 画圆,按 S 画方)
  • 🔴 困难:做一个"印章工具"——鼠标点击时,用 turtle 的 stamp() 盖一个海龟脚印

八、下期预告

键盘 + 鼠标都能控制了!下节课挑战更炫酷的:屏幕动画——让多个角色同时动起来!

下期:《turtle第11课:多角色动画》

有问题欢迎留言!

最新文章

随机文章