python turtle画图代码大全,python turtle画圆形螺旋

这篇文章主要介绍了python turtle画图代码大全,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

一、说明

         海龟图形是向孩子们介绍编程的一种流行方式。他起源在 1967 年开发的原始 Logo 编程语言的一部分python做简单笑脸。这种库的作图极有个性,必须将其推荐给大家。

        想象一只机器乌龟在 x-y 平面中从 (0, 0) 开始。导入海龟后,给它命令 turtle.forward(15),它会(在屏幕上!)朝它所面对的方向移动 15 个像素,并在移动时画一条线。给它命令 turtle.right(25),它原地顺时针旋转 25 度。

二、基础功能和实现函数

2.1 画笔移动和绘制命令

命令

说明

turtle.forward(distance)

向当前画笔方向移动distance像素长度

turtle.backward(distance)

向当前画笔相反方向移动distance像素长度

turtle.right(degree)

顺时针移动degree°

turtle.left(degree)

逆时针移动degree°

turtle.pendown()

移动时绘制图形,缺省时也为绘制

turtle.goto(x,y)

|setpos() | setposition() 前往/定位

将画笔移动到坐标为x,y的位置

turtle.penup()

提起笔移动,不绘制图形,用于另起一个地方绘制

turtle.circle()

画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

turtle.setx( )

将当前x轴移动到指定位置

turtle.sety( )

将当前y轴移动到指定位置

turtle.setheading(angle)

设置当前朝向为angle角度

turtle.home()

设置(返回)当前画笔位置为原点,朝向东。

turtle.dot(r)

绘制一个指定直径和颜色的圆点

turtle.stamp()印章
turtle.clearstamp()清除印章
turtle.clearstamps()清除多个印章
turtle.undo()撤消
turtle.speed()速度

2.2 获取移动和绘制信息

  • position() | pos() 位置
  • towards() 目标方向
  • xcor() x坐标
  • ycor() y坐标
  • heading() 朝向
  • distance() 距离

2.3   画笔控制命令

1)绘图状态

  • pendown() | pd() | down() 画笔落下
  • penup() | pu() | up() 画笔抬起
  • pensize() | width() 画笔粗细
  • pen() 画笔
  • isdown() 画笔是否落下

2)颜色控制

  • color() 颜色
  • pencolor() 画笔颜色
  • fillcolor() 填充颜色

3)填充

  • filling() 是否填充
  • begin_fill() 开始填充
  • end_fill() 结束填充

4)更多绘图控制

  • reset() 重置
  • clear() 清空
  • write() 书写

2.4 设置与度量单位

  • degrees() 角度
  • radians() 弧度

2.5 海龟状态

1)可见性

命令

说明

turtle.hideturtle()

隐藏画笔的turtle形状

turtle.showturtle()

显示画笔的turtle形状

isvisible()是否可见


2)外观

shape() 形状

  • resizemode() 大小调整模式
  • shapesize() | turtlesize() 形状大小
  • shearfactor() 剪切因子
  • settiltangle() 设置倾角
  • tiltangle() 倾角
  • tilt() 倾斜
  • shapetransform() 变形
  • get_shapepoly() 获取形状多边形


2.6 使用事件

  • onclick() 当鼠标点击
  • onrelease() 当鼠标释放
  • ondrag() 当鼠标拖动

2.7  全局控制命令

命令

说明

turtle.clear()

清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset()

清空窗口,重置turtle状态为起始状态

turtle.undo()

撤销上一个turtle动作

turtle.isvisible()

返回当前turtle是否可见

stamp()

复制当前图形

turtle.write(s [,font=("font-name",font_size,"font_type")])

写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

2.8 特殊海龟方法

begin_poly() 开始记录多边形
end_poly() 结束记录多边形
get_poly() 获取多边形
clone() 克隆
getturtle() | getpen() 获取海龟画笔
getscreen() 获取屏幕
setundobuffer() 设置撤消缓冲区
undobufferentries() 撤消缓冲区条目数
 

2.8 TurtleScreen/Screen 方法

1) 窗口控制

bgcolor() 背景颜色
bgpic() 背景图片
clearscreen()
resetscreen()
screensize() 屏幕大小
setworldcoordinates() 设置世界坐标系

2)动画控制

delay() 延迟
tracer() 追踪
update() 更新
使用屏幕事件
listen() 监听
onkey() | onkeyrelease() 当键盘按下并释放
onkeypress() 当键盘按下
onclick() | onscreenclick() 当点击屏幕
ontimer() 当达到定时
mainloop() | done() 主循环

3)设置与特殊方法

mode()
colormode() 颜色模式
getcanvas() 获取画布
getshapes() 获取形状
register_shape() | addshape() 添加形状
turtles() 所有海龟
window_height() 窗口高度
window_width() 窗口宽度

4)输入方法

textinput() 文本输入
numinput() 数字输入
Screen 专有方法
bye() 退出
exitonclick() 当点击时退出
setup() 设置
title() 标题
 

二、用turtle绘图的零件

2.1 画布(canvas)

        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。

        设置画布大小

         turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别为画布的宽(单位像素), 高, 背景颜色。

        如:turtle.screensize(800,600, "green")

               turtle.screensize() #返回默认大小(400, 300)

        turtle.setup(width=0.5, height=0.75, startx=None, starty=None),参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。

        如:turtle.setup(width=0.6,height=0.6)

               turtle.setup(width=800,height=800, startx=100, starty=100)

2.2. 画笔

1) 画笔的状态

        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

2) 画笔的属性

        画笔(画笔的属性,颜色、画线的宽度等)

        1) turtle.pensize():设置画笔的宽度;

        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。

        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

3) 绘图命令

         操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。

(2)     画笔控制命令

命令说明

函数名函数意义
turtle.forward(distance)向当前画笔方向移动distance像素长度
turtle.backward(distance)向当前画笔相反方向移动distance像素长度
turtle.right(degree)顺时针移动degree°
turtle.left(degree)逆时针移动degree°
turtle.pendown()移动时绘制图形,缺省时也为绘制
turtle.goto(x,y)

将画笔移动到坐标为x,y的位置

turtle.penup()提起笔移动,不绘制图形,用于另起一个地方绘制
turtle.circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
setx( )将当前x轴移动到指定位置
sety( )将当前y轴移动到指定位置
setheading(angle)设置当前朝向为angle角度
home()

设置当前画笔位置为原点,朝向东。

dot(r)绘制一个指定直径和颜色的圆点

(4)    其他命令

命令

说明

turtle.mainloop()或turtle.done()

启动事件循环 -调用Tkinter的mainloop函数。

必须是乌龟图形程序中的最后一个语句。

turtle.mode(mode=None)

设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。

模式

初始龟标题

正角度

standard

向右(东)

逆时针

logo

向上(北)

顺时针

turtle.delay(delay=None)

设置或返回以毫秒为单位的绘图延迟。

turtle.begin_poly()

开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.end_poly()

停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.get_poly()

返回最后记录的多边形。

3. 命令详解

        3.1 turtle.circle(radius, extent=None, steps=None)

        描述:以给定半径画圆

        参数:

        radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆;

        extent(弧度) (optional);

        steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。

举例:

circle(50) # 整圆;

circle(50,steps=3) # 三角形;

circle(120, 180) # 半圆

三、艺术图实例:

3.1 四彩虹

import turtle as tur
import colorsys as cs
tur.speed(0)
tur.width(1)
tur.bgcolor('black')
h = 0.0
for j in range(4):
    for i in range(100):
        tur.color(cs.hsv_to_rgb(h,1,1))
        tur.circle(10+(i*1))
        h +=0.01
        tur.right(90)
tur.hideturtle()
tur.done()

4.2 太阳花

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# coding=utf-8

import turtle

import time

  

# 同时设置pencolor=color1, fillcolor=color2

turtle.color("red""yellow")

  

turtle.begin_fill()

for in range(50):

turtle.forward(200)

turtle.left(170)

turtle.end_fill()

  

turtle.mainloop()

  

4.3 星形图

from turtle import *

import colorsys
speed(0)
bgcolor('black')
tracer(5)
width(2)
h=0.001
for i in range(90):
    color(colorsys.hsv_to_rgb(h,1,1))
    forward(100)
    left(60)
    forward(100)
    right(120)
    circle(50)
    left(240)
    forward(100)
    left(60)
    forward(100)
    h+=0.02
    color(colorsys.hsv_to_rgb(h,1,1))
    forward(100)
    right(60)
    forward(100)
    right(60)
    forward(100)
    left(120)
    circle(-50)
    right(240)
    forward(100)
    right(60)
    forward(100)
    left(2)
    h+=0.02
done()

4.4 红花开

import turtle as tur
import colorsys as cs

# tur.setsetup(800,800)
tur.speed(0)
tur.width(2)
tur.bgcolor('black')

for j in range(25):
    for i in range(15):
        tur.color(cs.hsv_to_rgb(1/25,j/25,1))
        tur.right(90)
        tur.circle(200-j*4,90)
        tur.left(90)
        tur.circle(200-j*4,90)
        tur.right(180)
        tur.circle(50,24)
tur.hideturtle()
tur.done()

4.5 真菌繁殖图

import turtle as tu

roo = tu.Turtle()  # Turtle object
wn = tu.Screen()  # Screen Object
wn.bgcolor("black")  # Screen Bg color
wn.title("Fractal Tree Pattern")
roo.left(90)  # moving the turtle 90 degrees towards left
roo.speed(20)  # setting the speed of the turtle


def draw(l):  # recursive function taking length 'l' as argument
    if (l < 10):
        return
    else:

        roo.pensize(2)  # Setting Pensize
        roo.pencolor("yellow")  # Setting Pencolor as yellow
        roo.forward(l)  # moving turtle forward by 'l'
        roo.left(30)  # moving the turtle 30 degrees towards left
        draw(3 * l / 4)  # drawing a fractal on the left of the turtle object 'roo' with 3/4th of its length
        roo.right(60)  # moving the turtle 60 degrees towards right
        draw(3 * l / 4)  # drawing a fractal on the right of the turtle object 'roo' with 3/4th of its length
        roo.left(30)  # moving the turtle 30 degrees towards left
        roo.pensize(2)
        roo.backward(l)  # returning the turtle back to its original psition


draw(20)  # drawing 20 times

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("red")  # red
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(3 * l / 4)
        roo.right(60)
        draw(3 * l / 4)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(20)


########################################################

def draw(l):
    if (l < 10):
        return
    else:

        roo.pensize(3)
        roo.pencolor("lightgreen")  # lightgreen
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor("red")  # red
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor("yellow")  # yellow
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(3)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(4 * l / 5)
        roo.right(60)
        draw(4 * l / 5)
        roo.left(30)
        roo.pensize(3)
        roo.backward(l)


draw(40)


########################################################
def draw(l):
    if (l < 10):
        return
    else:

        roo.pensize(2)
        roo.pencolor("cyan")  # cyan
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("yellow")  # yellow
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.left(270)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor("magenta")  # magenta
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)

roo.right(90)
roo.speed(2000)


# recursion
def draw(l):
    if (l < 10):
        return
    else:
        roo.pensize(2)
        roo.pencolor('#FFF8DC')  # white
        roo.forward(l)
        roo.left(30)
        draw(6 * l / 7)
        roo.right(60)
        draw(6 * l / 7)
        roo.left(30)
        roo.pensize(2)
        roo.backward(l)


draw(60)
wn.exitonclick()

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#import ... 使用库中函数需要 库.函数 不会出现函数重名问题 #from .... import* 则可以直接使用函数名 #import .... as ....使代码量更少且不容易重名 import turtle #设置窗体大小和位置,4个参数中后两个可选为左上角坐标,setup函数不是必须的 turtle.setup(650,350,200,200) #绝对坐标 turtle.goto(x,y)海龟一开始在面的中心(0,0),到达(x,y) #相对坐标 海龟当前运行的方向是前进方向 turtle.fd(d) 或turtle.forward(d) #后方是后退方向 turtle.bk(d) #左侧是左侧方向 turtle.circle(r,angle)以左侧的某个点为圆心向左侧 #右侧是右侧方向 # 笔控制函数pen... # 一般成对出现: turtle.penup() 别名 turtle.pu() 不 # turtle.pendown() turtle.pd() # #笔宽度设置后一直有效 turtle.pensize(width) 或 turtle.width(width) #笔颜色 turtle.pencolor("purple")或 turtle.pencolor(0.63,0.13,0.94) 或 turtle.pencolor((0.63,0.13,0.94)) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.pencolor("purple") #绝对角度 turtle角度坐标体系,类似数学平面直角坐标系,turtle.seth(angle)改变海龟行进角度,但不行进 或turtle.setheading() #相对角度 turtle.left(angle)向左改变角度 turtle.right(angle)向右改变角度 turtle.seth(-40) #turtle.circle(r,extent=None)绘制弧 默认圆心是左侧r距离的位置,弧度为360 -r右侧 for i in range(4): turtle.circle(40,80) turtle.circle(-40,80) turtle.circle(40,80/2) turtle.fd(40) turtle.circle(16,180) turtle.fd(40*2/3) turtle.done()
### 回答1: Python turtle是一个非常有趣的绘图工具,可以用来绘制各种形状和图案。以下是一些常见的Python turtle画图代码: 1. 绘制正方形: import turtle turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) 2. 绘制五角星: import turtle turtle.color("red") turtle.begin_fill() for i in range(5): turtle.forward(100) turtle.right(144) turtle.end_fill() 3. 绘制圆形: import turtle turtle.circle(50) 4. 绘制螺旋线: import turtle for i in range(100): turtle.forward(i) turtle.right(90) 5. 绘制三角形: import turtle turtle.forward(100) turtle.left(120) turtle.forward(100) turtle.left(120) turtle.forward(100) 以上是一些常见的Python turtle画图代码,可以根据需要进行修改和扩展。 ### 回答2: Python turtle是一个非常好用的绘图工具,它可以很快地帮助我们创造出一些简单、生动的图。在使用Turtle进行图形绘制时,我们可以在图形绘制的同时,通过学习Turtle的运用,提高我们的Python编程能力。 以下是一些Python turtle画图代码: 1.正方形: import turtle turtle.speed(10) turtle.color("red") for i in range(4): turtle.forward(100) turtle.right(90) 2.三角形: import turtle turtle.speed(5) turtle.color("blue") for i in range(3): turtle.forward(100) turtle.left(120) 3.五角星: import turtle turtle.speed(5) turtle.color("purple") for i in range(5): turtle.forward(100) turtle.right(144) 4.六边形: import turtle turtle.speed(5) turtle.color("green") for i in range(6): turtle.forward(100) turtle.right(60) 5.圆形: import turtle turtle.speed(5) turtle.circle(50) 6.心形: import turtle turtle.speed(10) turtle.color("pink") turtle.left(45) turtle.forward(100) turtle.circle(50, 180) turtle.right(90) turtle.circle(50, 180) turtle.forward(100) 7.菱形: import turtle turtle.speed(5) turtle.color("orange") turtle.left(45) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) Python turtle是一个非常有趣、易学易用、充满趣味的图形绘制工具,我们可以通过不断的实践和探索,来不断提高我们的交互式编程技能。 ### 回答3: Pythonturtle 库是一个非常有趣和常用的绘图工具,可以通过简单的代码绘制有趣的图形和动,而且非常易学易用。本文将为大家介绍一些常用的 turtle 绘图代码和技巧,帮助读者更好地使用 turtle 库。 1. 前进和后退 使用 turtle 绘图时,最基本的操作就是前进和后退,可以通过向前和向后方法 forward() 和 backward() 来实现。例如: ```python import turtle turtle.forward(100) #向前移动100个像素 turtle.backward(100) #向后移动100个像素 turtle.done() #完成后关闭窗口 ``` 2. 左右转向 除了前进和后退,turtle 还可以左右转向,可以通过左右方法 left() 和 right() 来实现。例如: ```python import turtle turtle.left(90) #向左旋转90度 turtle.right(90) #向右旋转90度 turtle.done() #完成后关闭窗口 ``` 3. 圆和弧线 turtle 还可以圆和弧线,可以通过 circle() 和 circle(半径, 角度) 方法来实现。例如: ```python import turtle turtle.circle(50) # 半径为50的圆 turtle.circle(50, 180) # 半径为50的圆的一半 turtle.done() #完成后关闭窗口 ``` 4. 多边形 除了圆和弧线,turtle 还可以出多边形,可以通过 for 循环和 forward() 方法来实现,例如: ```python import turtle n = 6 # 多边形边数 angle = 360 / n # 多边形内角度数 for i in range(n): turtle.forward(100) turtle.left(angle) turtle.done() #完成后关闭窗口 ``` 5. 颜色和填充 turtle 还可以设置不同的颜色和填充效果,可以通过 color() 和 fillcolor() 方法来实现。例如: ```python import turtle turtle.color("red", "yellow") turtle.begin_fill() turtle.circle(50) turtle.end_fill() turtle.done() #完成后关闭窗口 ``` 6. 图形重复 turtle 还可以通过 dot 和 stamp() 方法来重复绘制图形,例如: ```python import turtle turtle.dot(50) # 绘制圆点 turtle.stamp() # 重复绘制当前图形 turtle.done() #完成后关闭窗口 ``` 7. 自定义图形 turtle 还可以通过 register_shape() 方法来注册自定义图形。需要先定义一个列表,将像素的 x 和 y 坐标值依次添加到列表中,最后调用 register_shape() 方法。例如: ```python import turtle my_shape = ((0,0), (50,0), (50,50), (0,50)) # 定义自定义图形 turtle.register_shape("myshape", my_shape) # 注册自定义图形 turtle.shape("myshape") # 使用自定义图形 turtle.done() #完成后关闭窗口 ``` 8. 绘制文本 turtle 还可以绘制文本,可以通过 write() 方法来实现。例如: ```python import turtle turtle.write("Hello, world!") # 绘制文本 turtle.done() #完成后关闭窗口 ``` 9. 清屏和控制速度 turtle 还可以清屏和控制绘速度,可以通过 clear() 和 speed() 方法来实现。例如: ```python import turtle turtle.speed(1) # 设置绘速度 turtle.clear() # 清空屏幕 turtle.done() #完成后关闭窗口 ``` 以上是常用的 turtle 绘图代码和技巧,可以让读者更好地使用 turtle 绘图。当然,还有许多其他使用方法,希望读者可以通过更多练习和查阅官方文档来深入掌握 turtle 库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值