返回顶部
首页 > 资讯 > 后端开发 > Python >《Python趣味工具》——自制emoji3
  • 619
分享到

《Python趣味工具》——自制emoji3

python开发语言 2023-09-21 20:09:41 619人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今日目标 在上次,我们绘制了静态的emoji图。并且总结了turtle中的常用函数。 本次我们将尝试制作一个动态的emoji,让你的表情包动起来! 文章目录 一、动画原理:二、制作动画:

今日目标
在上次,我们绘制了静态的emoji图。并且总结了turtle中的常用函数。

本次我们将尝试制作一个动态的emoji,让你的表情包动起来!


在这里插入图片描述


文章目录

一、动画原理:

动画的原理简单来说就是一张张图片快速切换而成。

要在turtle中实现动画的效果,同样可以通过图片快速切换的方式来实现。


二、制作动画:

那怎么制作动画呢?我们通过对比观察两张图片,发现唯一的不同点是黑眼珠的位置不同。

而修改眼珠的位置,只需要修改绘制时移动的步数就可以了,然后不断的动可以看作循环打印,即循环调用绘制函数就好啦!
在这里插入图片描述
下面我们来对原来的函数进行一定的修改:

1. 修改eyes_black()函数:

我们上次已经绘制好了一侧的眼球:详见《Python趣味工具》——自制emoji2
而我们在绘制另一侧眼珠时,只需要修改移动步数——也就是将forward(6),改为forward(60)即可。(这里具体的移动大小可以自己预先算出来,包括后面的每一步都一样)

下面我们修改eyes_black()函数,为它设置一个参数x,代表移动的步数。

#  TODO 定义一个eyes_black()函数绘制黑眼珠,参数为xdef eyes_black(x):    # 使用seth()函数将角度设置为0    seth(0)        # 使用forward()函数前进x步    forward(x)        # 使用pendown()函数落笔    pendown()        # 使用pensize()函数设置画笔粗细为15    pensize(15)        # 使用pencolor()函数设置画笔颜色为"black"    pencolor("black")        # 使用circle()函数绘制一个半径为5,圆心角为360度    circle(5,360)        # 使用penup()函数抬笔    penup()        # 使用forward()函数前进110步    forward(110)        # 使用pendown()函数落笔    pendown()        # 使用circle()函数绘制一个半径为5的圆    circle(5,360)        # 使用hideturtle()函数隐藏画笔    hideturtle()

在这里插入图片描述


2. 绘制表情包文字:

接下来我们需要制作表情包文字。

步骤如下:

  1. 用input函数邀请用户输入自定义文字内容。
  2. 定义一个write_emoji()函数书写文字内容。
    在这里插入图片描述

具体怎么输出文字我们在《Python趣味工具》——自制emoji(1)绘制爱心应援牌❤️里已经讲过了,大家可以自行参考。

# 使用input()函数引导用户输入表情包语录# 文案内容为"请输入表情包语录:"content=input("请输入表情包语录:")# 定义一个write_emoji()函数书写文字 def write_emoji():    # 使用penup()函数抬起画笔    penup()        # 使用fillcolor()函数将填充颜色设置为black    fillcolor("black")        # 使用Goto()函数移到坐标点为(0,-170)的位置    goto(0,-170)        # 使用write()函数设置书写内容    # 文字内容为content,居中方式为align = "center",字体类别,大小和粗细为font=("Arial",25,"bold")    write(content,align="center",font=("Arial",25,"bold"))    

3. 定义emoji函数(汇合所有函数):

我们已经分别定义函数绘制了emoji的每一个部分。

接下来我们可以拼接函数完成整个emoji的绘制。

在这里插入图片描述
完成绘制表情包的函数,分为3步:

定义函数emoji(x)绘制表情包,参数x表示黑眼珠移动距离。

函数包含:draw_face(),draw_mouth(),eyes_white(),eyes_black(x),write_emoji()共5个部分。

调用emoji(x)函数,将参数设置为60,绘制黑眼珠在右侧的表情包。

# 定义一个函数绘制emoji绘制表情,参数x表示移动位置def emoji(x):    # 使用draw_face()函数绘制脸部    draw_face()        # 使用draw_mouth()函数绘制嘴巴    draw_mouth()        # 使用eyes_white()函数绘制白眼珠    eyes_white()        # 使用eyes_black(x)函数绘制黑眼珠,参数x表示移动距离    eyes_black(x)        # 使用write_emoji()函数书写表情包文字    write_emoji()    # 调用emoji(x)函数,将参数设置为60,绘制表情2emoji(60)

在这里插入图片描述


4. 动画切换:

接下来我们要完成最重要的动画部分啦~

根据动画的实现原理,我们可以将两张emoji图片反复切换播放,实现动图效果,也就是:

  1. 展示emoji1
  2. 刷新屏幕
  3. 暂停一段时间(这个根据自己的实际情况看着写,不停顿效果可能会很鬼畜)
  4. 展示emoji2
# 设置一个计数器,从0开始计数   n = 0# 当计数小于10时while n < 10:      # 使用tracer()函数,关闭动画    tracer(0)        # 绘制表情包1,emoji(6)    emoji(6)        # 使用update()函数刷新画面    update()        # 使用time.sleep()函数停顿0.5秒    time.sleep(0.5)         # 使用tracer()函数,关闭动画    tracer(0)        # 绘制表情包2,emoji(60)    emoji(60)        # 使用update()函数刷新画面    update()        # 使用time.sleep()函数停顿0.5秒    time.sleep(0.5)        # 计数器加1    n = n + 1

第1-4行代码的作用是设置一个计数器,设置表情包的动画次数。我们将表情包的动画次数设置为10次。你在本地完成时可以修改次数,甚至一直让它动起来。

第5-12行代码的作用是绘制表情包1,并刷新画面,等待一段时间。

第13-20行代码的作用是绘制表情包2,并刷新画面,等待一段时间。

第21-22行代码的作用是计数器加1.


update()

一个函数,用于刷新画面。

在替换下一张图片前需要刷新画面,我们可以使用update()函数来实现。

在图形绘制完毕后,再使用update()函数,就可以看到当前绘制好的整个图形。


tracer(0)

一个函数,作用是控制turtle动画播放的开关。

可以用来调整绘画速度或者关闭/打开绘画过程。

比如:
我们知道,小海龟🐢走过的地方会留下它的轨迹。往前移动一点,线条就变长一点。但是如果我们想直接看到绘图结果,不想看到这样的更新过程呢?

使用tracer(0)函数,可以关闭了轨迹,即我们看不到小海龟的爬行过程。


上下两个动图分别为没有用tracer函数,和使用tracer(0)+update()函数的效果:
在这里插入图片描述


在这里插入图片描述


三、完整源码

完结撒花~🎉🎉🎉,我们已经制作出了自己的第一个GIF动图,下面附上源代码,相信你也是跃跃欲试吧!

# 导入turtle中的全部函数from turtle import *# 使用input()函数引导用户输入表情包语录# 文案内容为"请输入表情包语录 :"content = input("请输入表情包语录 :")# 定义draw_face()函数绘制脸部def draw_face():    # 抬起画笔    penup()        # 移动到坐标点为(-120,0)的地方    goto(-120,0)        # 落笔    pendown()        # 将画笔颜色设置为黑色"black"    pencolor("black")        # 将画笔粗细设置为4    pensize(4)        # 调整海龟朝向-90度方向    seth(-90)        # 开始填充颜色    begin_fill()        # 画圆,圆的半径为130,圆心角为360度    circle(130,360)        # 填充颜色为"gold"    fillcolor("gold")        # 停止填充颜色    end_fill()    # 定义draw_mouth() 函数绘制嘴巴   def draw_mouth():    # 抬起画笔    penup()        # 移动到坐标点为(-80,-10)的位置    goto(-80,-10)        # 落笔    pendown()        # 调整海龟朝向-90度方向    seth(-90)        # 绘制一个半径为90,圆心角为180的半圆    circle(90,180)    # 定义eys_white()函数绘制眼白   def eyes_white():    # 使用penup()函数抬起画笔    penup()        # 使用forward()函数往前直走60步    forward(60)        # 使用seth()函数将角度调整为155度    seth(155)        # 使用pendown()函数落笔    pendown()        # 使用pensize()函数设置画笔粗细为20    pensize(20)        # 使用pencolor()函数设置画笔颜色为"white"    pencolor("white")        # 使用circle()函数绘制一个半径为100,圆心角为45的弧形    circle(100,45)        # 使用penup()函数抬笔    penup()        # 使用seth()函数朝向180度方向    seth(180)        # 使用forward()函数向前走40步    forward(40)        # 使用seth()函数将角度调整为155度    seth(155)        # 使用pendown()函数落笔    pendown()        # 使用circle()函数绘制一个半径为100,圆心角为45度的圆弧    circle(100,45)        # 使用penup()函数抬笔    penup()#  定义一个eyes_black()函数绘制黑眼珠,参数为xdef eyes_black(x):    # 使用seth()函数将角度设置为0    seth(0)        # 使用forward()函数前进x步    forward(x)        # 使用pendown()函数落笔    pendown()        # 使用pensize()函数设置画笔粗细为15    pensize(15)        # 使用pencolor()函数设置画笔颜色为"black"    pencolor("black")        # 使用circle()函数绘制一个半径为5,圆心角为360度    circle(5,360)        # 使用penup()函数抬笔    penup()        # 使用forward()函数前进110步    forward(110)        # 使用pendown()函数落笔    pendown()        # 使用circle()函数绘制一个半径为5的圆,圆心角为360度    circle(5,360)        # 使用hideturtle()函数隐藏画笔    hideturtle()    # 定义一个write_emoji()函数书写文字 def write_emoji():    # 使用penup()函数抬起画笔    penup()        # 使用fillcolor()函数将填充颜色设置为black    fillcolor("black")        # 使用goto()函数移到坐标点为(0,-170)的位置    goto(0,-170)        # 使用write()函数设置书写内容    # 文字内容为love,居中方式为align = "center",字体类别,大小和粗细为font=("Arial",25,"bold")    write(content,align = "center",font=("Arial",25,"bold"))     # 定义一个函数绘制emoji绘制表情,参数x表示移动位置def emoji(x):    # 使用draw_face()函数绘制脸部    draw_face()        # 使用draw_mouth()函数绘制嘴巴    draw_mouth()        # 使用eyes_white()函数绘制白眼珠    eyes_white()        # 使用eyes_black(x)函数绘制黑眼珠,参数x表示移动距离    eyes_black(x)        # 使用write_emoji()函数书写表情包文字    write_emoji()    # 导入time函数import time# 设置一个计数器,从0开始计数   n = 0# 当计数小于10时while n < 10:    # 使用tracer()函数,关闭动画    tracer(0)        # 绘制表情包1,emoji(6)    emoji(6)        # 使用update()函数刷新画面    update()        # 使用time.sleep()函数设置停顿时间0.5秒    time.sleep(0.5)        # 使用tracer()函数,关闭动画    tracer(0)        # 绘制表情包2,emoji(60)    emoji(60)        # 使用update()函数刷新画面    update()        # 使用time.sleep()函数设置停顿时间0.5秒    time.sleep(0.5)        # 计数器加1    n = n + 1    # 使用done()函数使得程序不会自动退出    done()    

四、拓展讲解:

1. python模块的安装:

在实际使用中,我们发现有的模块需要安装,但有的不需要,这是怎么回事呢?原因在于有的模块是内置的,有的是第三方提供的:

内置模块,是你下载了Python编辑器就自带的模块,在使用中,不需要安装,只需要导入就可以

第三方模块,就需要你在终端安装并且在编辑器导入了。

类比一下就是,标准模块是你手机买到就安装的App,而第三方模块就是你自己去要应用市场下载的App。
在这里插入图片描述

time,turtle是内置模块所以不需要在终端安装!


2. turtle模块和函数的用法总结:

打个比方来说,下载了某个App后我们当然要使用里面的功能

而调用函数其实就是在使用模块中的功能。


模块的导入方法:

方法1: import turtle 导入模块后,程序知道我们有了turtle这个库却不知道有哪些函数。
使用时需要用turtle.pensize()这样的方法。

方法2:from turtle import *导入所有函数时,相当于把所有函数都装进来了,就可以直接使用其中的函数了!

在这里插入图片描述
不同的模块导入的具体内容可能有些差异,但结构相似


turtle的角度:

相对角度
以海龟的朝向为基准进行转向。
例如:left(),right()

绝对角度
以坐标轴方向为基准调整角度。
例如:seth()

在这里插入图片描述


在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_73453526/article/details/132645398

--结束END--

本文标题: 《Python趣味工具》——自制emoji3

本文链接: https://lsjlt.com/news/414580.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 《Python趣味工具》——自制emoji3
    今日目标 在上次,我们绘制了静态的emoji图。并且总结了turtle中的常用函数。 本次我们将尝试制作一个动态的emoji,让你的表情包动起来! 文章目录 一、动画原理:二、制作动画:...
    99+
    2023-09-21
    python 开发语言
  • Python海龟绘图之绘制趣味简笔画
    目录图画效果:代码分享:红日部分 :黑边红底小鸟函数:海鸥飞翔大船部分:船身加旗帜小船部分:船身加旗帜水面部分:横线表示图画效果: 代码分享: 整体由四部分组成:红日、小鸟、大小...
    99+
    2024-04-02
  • 10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些
    本篇文章为大家展示了10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有些误解认为 shell 脚本仅用于 CLI 环境。实际上在 KD...
    99+
    2023-06-16
  • Python+PyQt5自制监控小工具
    本篇文章通过使用python实现对计算机摄像头的调用从而实现摄像监控的功能。 利用opencv的图像处理功能可以轻松对计算机摄像头的调用实现实时图像的采集效果。 最终将图片进行保存后...
    99+
    2023-03-19
    Python PyQt5监控工具 Python PyQt5监控 Python 监控 Python PyQt5
  • Python 制作自动化翻译工具
    妈妈再也不用担心我的英语了。 一个可能你似曾相识的场景 阅读内容包含大量英文的 PPT、Word、Excel 或者记事本时,由于英语不熟悉,为了流利地阅读,需要打开浏览器进入谷歌翻译的主界面,然后把英文复制到谷歌翻...
    99+
    2022-06-02
    python 自动化翻译 python 翻译工具
  • Windows GUI自动化控制工具之python uiAutomation
    对 Windows GUI进行自动化控制的工具有很多,比如pywinauto、pyautogui、pywin32、Autoit、airtest、UIAutomation等,UI Automation ...
    99+
    2023-09-01
    自动化 python uiautomation windows gui 自动化
  • 趣味Python实战练习之自动更换桌面壁纸脚本附源码
    目录前言目标地址先是爬虫代码导入数据请求数据解析数据保存数据运行代码,查看结果自动跟换桌面壁纸代码最后实现效果前言 发现一个不错的壁纸网站,里面都是超高清的图片,而且还是免费为的。 ...
    99+
    2024-04-02
  • 怎么使用Python+PyQt5自制监控小工具
    本篇内容介绍了“怎么使用Python+PyQt5自制监控小工具”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!利用opencv的图像处理功能可...
    99+
    2023-07-05
  • 利用Python实现自制文件搜索小工具
    目录前言环境准备完整代码前言 嗨嗨,大家晚上好 ~ 当自己电脑文件很多还有点乱,不记得自己文件放哪里的时候,用电脑自带的搜索文件,这个等待时间可慢了 对我们这种敲代码的,这能忍吗,...
    99+
    2024-04-02
  • 如何自制Python函数帮助查询小工具
    今天就跟大家聊聊有关如何自制Python函数帮助查询小工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的自带文档功能很不错,给与我耳目一新的感觉。如果在CMD中进行“行...
    99+
    2023-06-17
  • python趣味挑战之爬取天气与微博热搜并自动发给微信好友
    目录一、系统环境二、爬取中国天气网三、爬取微博热搜四、微信自动发送消息五、源代码六、运行效果七、总结一、系统环境 1.python 3.8.2 2.webdriver(用于驱动edg...
    99+
    2024-04-02
  • 基于Python自制一个文件解压缩小工具
    经常在办公的过程中会遇到各种各样的压缩文件处理,但是呢每个压缩软件支持的格式又是不同的。 没有可以一种可以同时多种格式的并且免费的文件解压缩工具,于是我使用python的PyQt5开...
    99+
    2023-02-06
    Python文件解压缩工具 Python文件解压缩
  • 利用VBScript自制IE工具栏按钮
    这篇文章主要介绍“利用VBScript自制IE工具栏按钮”,在日常操作中,相信很多人在利用VBScript自制IE工具栏按钮问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”利用VBScript自制IE工具栏按钮...
    99+
    2023-06-08
  • python 自动化部署工具-fabri
    今天闲来无事,来介绍一下利用fabric 来部署代码包。 安装 pip install fabric fabric 默认引用fafile.py,指定执行文件加参数-f,如:fab -H 127.0.0.1 -f fabtest.py te...
    99+
    2023-01-31
    工具 python fabri
  • python 自动化部署工具Fabric
    自动化部署工具Fabric简介    Fabric就是一个帮助我们在上线时减少重复/繁琐操作的自动化部署利器,对于缺乏成熟运维平台的众多小公司的运维或开发人员来说,掌握这个工具是有必要的。1. Fabric是什么Fabric官方文档的描述如...
    99+
    2023-01-31
    工具 python Fabric
  • 基于Python+OpenCV制作屏幕录制工具
    目录应用平台屏幕录制部分计算视频最优fps及使用numpy计算中间帧数组使用pynput监听键盘按键如何保存MP4格式视频源码总结最近有在使用屏幕录制软件录制桌面,在用的过程中突发奇...
    99+
    2024-04-02
  • Python制作刷网页流量工具
    准备 必须环境: Python3 开始 先实现一个简单的版本,直接上代码: import urllib.request import urllib.error #创建get方法 def get(ur...
    99+
    2022-06-04
    流量 网页 工具
  • python 制作磁力搜索的工具
    这篇文章主要讲解了“python 制作磁力搜索的工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python 制作磁力搜索的工具”吧!一.准备工作装库,主要有tkinter os thre...
    99+
    2023-06-06
  • [python小工具]实现屏幕录制
      用python实现屏幕录制 PIL 即pollow 的安装命令如下: pip install pillow 其中cv2的安装是下面这条命令 pip install opencv-python #python + opencv 实...
    99+
    2023-01-31
    小工具 屏幕 python
  • python引入自己写的工具类
    假设项目目录结构是: common --dateutils.py scrip --report.py 当我们在report.py中直接使用 from dateutils import DateUtils 会报找不到模块的错误:No mod...
    99+
    2023-01-31
    工具 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作