基于turtle的Python作画

2018年6月12日笔记

  1. 按win+q键换出搜索界面,输入path,进入系统属性,选择高级,选择环境变量。在系统变量中的PATHEXT这个变量中文本内容为.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC。如果这个文本内容中没有.EXE,在cmd中输入命令的时候则不能省略.exe的后缀,即原本pip install xlwt要写成pip.exe install xlwt
  2. 学习用python作画:首先进入python的shell界面,方法是在安装好python的情况下在cmd中运行python命令,就可以进入python的shell界面。 进入以后,导入turtle库。方法是在python的shell中运行命令:from turtle import *。文章后面运行命令的环境都是python的shell。
  3. 画一条直线,执行下面的两行命令可以实现。
pendown()
forward(100)

pendown()的作用是落笔,只有落笔才能作画。 当不作画却想移动画笔的时候要提笔,用函数penup() forward是画笔向前移动,函数当中参数为移动距离。 forward(100)的意思是画笔向前移动100。

  1. 画一个边长为200的正方形。
for i in range(4):
    forward(200)
    right(90)
  1. 画一个复杂图形。
def draw1():
    reset()
    speed(10)
    for i in range(36):
        forward(200)
        left(170)
reset()
speed(10)
draw1()

speed()中的参数1-10画图速度递增,但是有一个反例参数为0时速度最快。 reset()会重置画笔,画布,作画速度。

  1. 顺时针方向画一个200半径的圆:circle(-200)。 逆时针方向画一个200半径的圆:circle(200)。 顺时针画一个100半径的半圆:circle(-100,180)。 顺时针画一个边长为150的正方形:circle(-150,360,4)
  2. 将图形涂色示例,画一个红色的半圆。
reset()
fillcolor('red')
begin_fill()
circle(100,180)
end_fill()

8.复杂图形涂色示例,画一个“太极”图案。

reset()
speed(10)
pendown()
circle(100,180)
circle(200,180)
circle(100,-180)
fillcolor('black')
begin_fill()
circle(100,180)
circle(200,180)
circle(100,-180)
end_fill()
penup()
goto(0,100)
dot(50)
goto(0,-100)
pencolor('white')
dot(50)
hideturtle()

circle(100)与circle(100,360)两条命令效果相同。 撤回一步:undo(),清空画布:clear()。

画出的太极图形.png

  1. 画一段曲线
for i in range(8):
    circle(20,100)
    circle(-20,100)
  1. 画一个复杂图形,利用循环嵌套方法
from turtle import *
reset()
speed(0)
pendown()
for i in range(6):
    fd(150)
    for j in range(10):
        circle(40)
        lt(36)
    lt(60)

复杂图形1.png

  1. 画一个复杂图形,利用循环嵌套方法
from turtle import *
reset()
speed(0)
for i in range(6):
    pendown()
    fd(150)
    for j in range(10):
        circle(40)
        lt(36)
    lt(60)
    penup()
    goto(0,0)

复杂图形2.png

  1. 获取画笔当前位置:position() pos() 两个函数用处一样 设置画笔位置:setposition() setpos() 获取角度:heading() 设置角度setheading() seth()
  2. 画一个椭圆
reset()
setheading(45)
circle(10,90)
circle(90,90)
circle(10,90)
circle(90,90)

14.画一个笑脸。下面的代码作为一个单独py文件可以运行。

from turtle import *
def go(x,y):
    penup()
    goto(x,y)
    pendown()
def arc(radius):
    circle(radius,90)
reset()
speed(0)
go(0,-150)
circle(200)
go(50,100)
seth(225)
arc(10)
arc(50)
arc(10)
arc(50)
go(-50,100)
seth(-45)
arc(-10)
arc(-50)
arc(-10)
arc(-50)
go(-70,-50)
arc(100)
hideturtle()

笑脸.png

直接在cmd中可能无法运行,需要先定义函数,再调用函数,如下图所示,。

cmd中运行示例.png

  1. 画一个酷炫图形。
from turtle import *
reset()
bgcolor('black')
speed(0)
colors = ['red','orange','green','cyan','blue','purple']
for i in range(360):
    pencolor(colors[i%6])
    fd(i*3/6+i)
    left(61)
    pensize(i*6/200)

炫酷图案.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阿凯的Excel

动态显示下拉框内容

过了冬至,你在北方瑟瑟发抖,我在广东秋风瑟瑟~ 最近小编经常梦回母校~放一张母校的美图! 年底了,又到了预订报刊的时候! 肯定有人会问,这年头还有谁看报刊...

31230
来自专栏腾讯Bugly的专栏

Android自绘动画实现与优化实战——以Tencent OS录音机波形动画为实例

前言 我们所熟知的,Android 的图形绘制主要是基于 View 这个类实现。 每个 View 的绘制都需要经过 onMeasure、onLayout、onD...

44440
来自专栏葬爱家族

Android高级动画(3)

上一篇文章我们讲了Android中的矢量动画,虽然文中展示的Demo并不多,但是相信大家还是体会到了矢量动画的强大。这里再做一个温故总结:

18910
来自专栏Windows Community

New UWP Community Toolkit - RangeSelector

概述 前面 New UWP Community Toolkit 文章中,我们对 V2.2.0 版本的重要更新做了简单回顾,其中简单介绍了 RangeSelect...

36970
来自专栏知晓程序

小程序也能做这么精致的动效?看完我给大神献上了膝盖…… | 开发

19330
来自专栏练小习的专栏

可视化格式模型基础应用实例

今天在群里看到一个需求,先放demo <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> ...

204100
来自专栏Google Dart

Flutte部件目录-基本部件(一)

一个容器首先用padding包围子组件(由decoration中出现的所有边框填满),然后将附加constraints应用于填充范围(将width和height...

43820
来自专栏十月梦想

CSS3动画animation

        animation和上次说的transform动画有点不同,需要进行定义动画规则,而animation则无需受体,自动执行动画,translat...

10730
来自专栏落影的专栏

Metal入门教程(一)图片绘制

这里是一篇Metal新手教程,先定个小目标:把绘制一张图片到屏幕上。 Metal系列教程的代码地址; OpenGL ES系列教程在这里;

1.1K50
来自专栏林德熙的博客

gif 格式

请看图片,gif 图分为图片文件头(File Header),gif信息(GIF Data Stream)和文件结尾(Trailer)三个部分,最主要的是 gi...

26520

扫码关注云+社区

领取腾讯云代金券