100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python turtle应用实例_python-turtle-一个简单实例子

python turtle应用实例_python-turtle-一个简单实例子

时间:2020-10-14 05:20:34

相关推荐

python turtle应用实例_python-turtle-一个简单实例子

Python模块 turtle的一个简单实例----爱心发射

本质上是对今天学习绘图的记录,个人记录,个人记录。

简单介绍turtle以及准备工作

官方的就很好啦

涉及到的软件:pycharm、git、zsh。

绘图思想

实际上了解turtle绘图的机制之后,绘制图形就是一件很简单的事情了。就像是你拿着画笔在选点绘线一样,只要注意好坐标位置。

在我的实际操作中,发现一个比较有趣的地方就是对心型的绘制。事实上我一开始以为是要把笛卡尔心型线给封装进去,搜索后发现大家很多都是用控制偏移来画出心形,然后就看到一些比较有意思的画法了。

一看就是工科生画法hh 机械制图还是有好处qwq

具体就是把握住 circle()会在当前点左边半径距离开始画圆就ok了,美中不足就是下面该是弧度,可以拿cad对应尺寸算一下改改

最终结果

其实是用视频转出来的,鬼知道我换了几个剪辑软件@-@

几个软件推荐一下Kdenlive,我愿称你为小pr

pacman直接就能下载

hello.gif

遇到并解决的问题

作为arch新手,连夜组好的python环境还很脆弱QAQ 在绘图之前的工作和绘图之后的报错、导出都是坑。来来回回花费了将近半天时间才算是勉强完成。下面是可能出现的问题以及解决方法

记录图像的时候调用的tkinter模块,会报出No module named _tkinter的错误信息。问题原因可能有很多,文末链接一个或许有帮助的帖子。事实上上述所有的情况我都试了,还是一直报错,就在我快要绝望的时候,我才想起来,python3里tkiter是小写开头,我导入的时候忘记改了...遂解决

关于pip list里面已经安装好的库,pycharm不识别的情况。这一点其实很重要,涉及到python虚拟环境的情况。事实上你开创一个新项目,pycharm会给你提供一个新的独立环境来为改项目服务,就会产生两个包环境,从离他近的那个读取包列表。具体解决方法文末链接,个人认为很透彻了,这才是一个正经回答该有的样子。

仍存在的问题,提供折中方法

针对arch linux :使用oh-my-zsh来配置zsh, 会和anaconda冲突。造成主题缺失、部分命令不可用的问题。这一点困扰了我好久,网上也没有什么特别有帮助的信息。只能说自己对linux还是不够了解,抽空挤时间好好研究一下。

在此diss一下中文社区的环境,一个答案各个平台甚至是同平台你抄来我抄去,图都不带换样的,还没啥实质性帮助。为了那么点流量至于吗,每次都得贼慢的去stack上面看鸟国人交流。

我临时的方法是使用pycharm, 暂时放弃jupyter notebook(能用,但是终端太丑了我受不了嘤嘤嘤)

记录turtle的绘图记录:这个也是个难缠的问题,或许windows会很好解决。

1、事实上stackoverflow上面有很完美的解决方法,遗憾的是他生成的是.eps文件而非gif。需要通过专业软件PS、IL等再去处理。(醒醒,你是linux用户)或许你可以通过网页上的在线转换转来一张张gif文件,然后批量合成这些gif文件成一个gif。oh, it's terrible.

2、github上有个开源项目,专门写了一个包来记录并生成gif和视频。你可以通过git clone的方式获取,注意原文指导有一点歧义,执行install文件需要在你的.git那里而非根目录,同时需要sudo提限如果不是特意设置的话。

参考文章

注意你的python版本,或许会存在问题

事实上他不该是个问题,你需要了解你的工具。对于新手来说这是一篇非常好的文章。

很完美的解决方法,但是需要额外软件支持

主要是想法nice, 简单实惠。

我的源码

事实上生成gif的方法并不完善,我只放出来了绘图部分的代码,仅供参考

# Have a nice day!

# A pink heart for you.

import tkinter

import turtle as tl

def draw():

tl.color('black')

tl.pensize(2)

# head

tl.penup()

tl.setpos(-200, 0)

tl.pendown()

tl.circle(50)

# body

tl.right(90)

tl.forward(70)

# leg_left

tl.right(45)

tl.forward(70)

# leg_right

tl.penup()

tl.setpos(-200, -70)

tl.pendown()

tl.left(120)

tl.forward(50)

tl.right(110)

tl.forward(60)

# arm_left

tl.penup()

tl.setpos(-200, -25)

tl.pendown()

tl.setheading(270)

tl.left(90)

tl.forward(40)

tl.left(50)

tl.forward(40)

# arm_right

tl.penup()

tl.setpos(-200, -45)

tl.pendown()

tl.setheading(270)

tl.left(90)

tl.forward(40)

tl.right(50)

tl.forward(40)

# heart

tl.fillcolor("pink")

tl.begin_fill()

tl.pensize(2)

tl.pencolor("pink")

tl.penup()

tl.setpos(-70, -80)

tl.pendown()

tl.setheading(0)

tl.left(45)

tl.fd(60)

tl.circle(30, 180)

tl.right(90)

tl.circle(30, 180)

tl.fd(60)

tl.end_fill()

# eyes

tl.pensize(5)

tl.pencolor("black")

tl.penup()

tl.setheading(270)

tl.setpos(-220, 60)

tl.pendown()

tl.fd(10)

tl.penup()

tl.setheading(270)

tl.setpos(-180, 60)

tl.pendown()

tl.fd(10)

# done

tl.hideturtle()

draw()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。