Python Turtle实战:绘制米老鼠并播放背景音乐

沈知远
沈知远
发布时间:2026-10-15 | 4人浏览过
原创

本文详细介绍如何使用Python的Turtle库绘制米老鼠图形,并集成pygame库播放背景音乐。文章分步解析头部、耳朵、五官及身体的绘制代码,讲解关键绘图函数的参数用法,并提供完整的可运行代码示例,适合Python初学者进行图形编程练习。

电视剧《余生请多指教》由杨紫和肖战主演,自3月15日起在腾讯视频全网独播,并于当晚8:20在湖南卫视金鹰独播剧场播出。对于关注该剧的粉丝而言,尝试使用Python制作一份独特的宣传素材是一个有趣的想法。

一、效果展示

在深入代码细节之前,先展示一下本文最终实现的绘制效果。

视频链接

二、代码详解

利用Python绘制米老鼠的核心原理是调用turtle库,通过分模块绘制的方式,依次完成头部外轮廓、耳朵、手部、衣物、裤装、脚部及鞋子等部分的绘制。

1.导入库

首先需要导入代码运行所需的库。若部分库未安装导致报错,可通过Anaconda Prompt使用pip命令进行安装。

import os
import pygame
import turtle as t

本示例仅使用了os、pygame和turtle三个库。其中,os库用于设置文件读取路径;pygame库用于在绘图过程中添加背景音乐,增加趣味性;turtle库作为核心绘图工具,提供画笔功能,允许用户通过数学逻辑控制的代码在画布上完成图形绘制。

2.播放音乐

接下来利用pygame库播放背景音乐,本文选取了与《余生请多指教》相关的歌曲。

#播放音乐
print('播放音乐')
pygame.mixer.init()
pygame.mixer.music.load(r"F:\公众号\49.余生请多指教\杨紫,肖战 - 余生请多指教 (Live).mp3") 
pygame.mixer.music.set_volume(0.5) 
pygame.mixer.music.play(1, 10)

这段音乐播放代码与整体绘图逻辑相对独立,用户可以选择在代码开头添加,或直接删除。若需播放音乐,需在music.load函数中指定音乐文件的具体路径。

3.画米老鼠头部外轮廓

随后进入米老鼠的正式绘制环节,首先绘制的是头部的外轮廓。

t.title('阿黎逸阳的代码公众号')
t.speed(10)
#t.screensize(1000, 800)
t.setup(startx=0, starty = 0, width=800, height = 600)
##画外轮廓
#画头
print('画头')
t.penup()
t.goto(20, 100)
t.begin_fill()
t.left(90)
t.pendown()
t.color('black')
t.pensize(2)
t.circle(60, 190)
t.left(150)
t.circle(-20, 110)
t.left(170)
t.circle(-35, 100)
t.circle(-15, 100)
t.left(140)
t.circle(-15, 100)
t.circle(-35, 95)
t.left(160)
t.circle(-20, 72)
t.end_fill()
t.left(20)
t.circle(-10, 80)
t.begin_fill()
t.circle(-60, 55)
t.left(60)
t.forward(20)
t.left(130)
t.forward(130)
t.left(120)
t.circle(-60, 30)
t.left(95)
t.forward(65)
t.end_fill()
t.penup()
t.goto(-100, 89)
t.pendown()
t.left(30)
t.circle(20, 60)
t.right(15)
t.circle(60, 30)
t.begin_fill()
#下巴
print('画下巴')
#t.right(30)
t.circle(60, 20)
t.right(30)
t.circle(33, 110)

关键代码详解:

t.pensize(width):用于设置画笔的线条粗细。

t.color(color):用于设置画笔的颜色。

t.penup():抬起画笔,通常用于移动到新的起始位置而不留下痕迹。

t.goto(x,y):将画笔移动至指定坐标(x,y),对应横坐标和纵坐标。

t.pendown():放下画笔,通常与penup配合使用,开始绘制。

t.left(degree):控制画笔向左旋转指定角度,括号内为度数。

t.right(degree):控制画笔向右旋转指定角度,括号内为度数。

t.circle(radius,extent,steps):radius表示半径,正值时圆心在画笔左侧,负值时在右侧;extent表示绘制的弧度范围;steps表示绘制的阶数。

绘制外轮廓的关键在于调节circle函数中的半径和弧度参数,以控制曲线的弯曲程度,从而使米老鼠的轮廓更加流畅自然。

4.画衣服和耳朵

完成头部外轮廓后,分模块绘制其他部分,本节重点介绍衣服和耳朵的绘制方法。

#上半身
t.backward(5)
t.right(150)
t.forward(18)
#t.left(10)
t.circle(-100, 25)
#衣服下弧线
print('画衣服下弧线')
t.right(50)
t.circle(-75, 63)
t.left(60)
t.circle(100, 30)
t.right(80)
t.circle(-30, 70)
t.circle(-20, 55)
t.forward(70)
t.end_fill()
t.penup()
t.goto(-100, -10)
t.pendown()
t.pensize(1.2)
t.left(175)
#t.pencolor('red')
t.pencolor('white')
t.circle(-30, 30)
#胳肢窝处的线
#1
t.penup()
t.goto(-81, -3)
t.pendown()
t.pensize(1.3)
t.setheading(30)
#t.pencolor('red')
t.pencolor('white')
t.forward(13)
#2
t.penup()
t.goto(-81, -3)
t.pendown()
t.pensize(1.3)
t.setheading(-18)
#t.pencolor('red')
t.pencolor('white')
t.circle(20, 32)
##画耳朵
#画右耳朵
print('画右耳朵')
t.penup()
t.goto(8, 140)
t.pendown()
t.begin_fill()
t.setheading(-10)
t.color('black')
t.circle(30, 160)
t.circle(60, 20)
t.circle(30, 160)
t.end_fill()
#画左耳朵
print('画左耳朵')
t.penup()
t.goto(-90, 130)
t.pendown()
t.begin_fill()
t.setheading(40)
t.color('black')
t.circle(30, 160)
t.circle(60, 20)
t.circle(30, 160)
t.circle(60, 20)
t.end_fill()

5.画眼睛、鼻子、嘴

本节介绍眼睛、鼻子和嘴巴的绘制代码。为了提升视觉效果,需注意保持眼睛的对称性。

#画眼睛
print('画眼睛')
#眼睛下方的线
t.penup()
t.goto(-48, 105)
t.pendown()
t.pensize(1.5)
t.right(17)
t.circle(-40, 42)
#左眼睛
t.penup()
t.goto(-42, 106)
t.pendown()
t.left(160)
t.circle(-30, 50)
t.circle(-7, 180)
t.left(30)
t.circle(-30, 44)
#左眼珠
t.penup()
t.goto(-42, 106)
t.pendown()
t.begin_fill()
t.right(140)
t.circle(30, 20)
t.circle(-4, 180)
#t.left(25)
t.circle(-15, 51)
t.end_fill()
#右眼睛
t.penup()
t.goto(-29, 107)
t.pendown()
t.right(160)
t.circle(-50, 28)
t.circle(-7, 180)
t.left(17)
t.circle(-30, 46)
#右眼珠
t.penup()
t.goto(-29, 107)
t.pendown()
t.begin_fill()
t.right(140)
t.circle(30, 20)
t.circle(-4, 180)
#t.left(25)
t.circle(-15, 51)
t.end_fill()
#画鼻子
print('画鼻子')
t.penup()
t.goto(-42, 102)
t.pendown()
t.begin_fill()
t.setheading(15)
t.circle(-40, 22)
t.circle(-7, 180)
t.circle(40, 20)
t.right(43)
t.circle(-7, 180)
t.end_fill()
#画嘴
print('画嘴')
#上弧线
t.penup()
t.goto(-80, 85)
t.pendown()
t.pensize(1.7)
t.setheading(-45)
t.circle(60, 90)
#嘴
t.begin_fill()
t.penup()
t.goto(-67, 73)
t.pendown()
t.setheading(-70)
t.circle(60, 30)
t.circle(20, 100)
t.right(10)
t.circle(60, 25)
t.setheading(210)
t.circle(-60, 55)
t.end_fill()
#画舌头
print('画舌头')
t.penup()
t.goto(-60, 57)
t.pendown()
t.begin_fill()
t.setheading(40)
t.color('black','pink')
t.circle(-18, 90)
t.setheading(61)
t.circle(-16, 90)
t.setheading(-122)
t.circle(-60, 20)
t.setheading(200)
t.circle(-50, 20)
t.setheading(150)
t.circle(-60, 20)
t.end_fill()
#画笑脸弧度
#左弧度
t.penup()
t.goto(-86, 77)
t.pendown()
t.pensize(1.7)
t.setheading(70)
t.circle(-18, 60)
#右弧度
t.penup()
t.goto(-5, 86)
t.pendown()
t.pensize(1.7)
#t.setheading(10)
t.circle(-18, 60)
print('画下巴')
#画下巴
t.penup()
t.goto(-58, 40)
t.pendown()
t.setheading(140)
t.circle(-60, 10)
#右嘎吱窝 
t.penup()
t.goto(-2, 40)
t.pendown()
t.pencolor('white')
t.pensize(1.2)
t.setheading(-90)
t.forward(11)

其余部分使用的函数与上述类似,鉴于篇幅限制,此处不再逐一展示所有代码。

以上就是利用Python绘制米老鼠的详细内容,更多关于Python绘图的资料请关注本站其他相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表