turtle绘图示例

#自定义窗口大小,背景颜色
#窗口标题名,位置
import turtle as t
import datetime

#方法一
#其实是通过设置画布大小来改变窗口大小
#t.screensize(800, 600, "green")
#screensize() #返回默认大小(400, 300)
#用screensize设置的是画布大小及背景色,窗体和画布不是一个概念会出现滚动条
#方法二
#屏幕的宽和高的百分百,默认位置屏幕的居中
#t.setup(width=0.6, height=0.6)
#指定窗口大小和位置,注意左上角坐标为0,0
t.setup(width=800, height=800, startx=100, starty=100)

#载入背景图片,是原图大小显示与窗口大小不是自适应
#t.bgpic('/home/xgj/Desktop/turtle/1.jpeg')   
#bug,可以识别png图片,但是jpeg不行
#用截图工具,截图生产png,可以。
#网上说只能显示gif图片,其实还可以显示png图片
#t.bgpic('/home/cnliutz/图片/t1.png')   #请注意,还可以显示gif图片,但是gif图片是不动的
#窗口的标题名
#默认为Python Turtle Graphics
t.title('Drawing')  #可自定义

#需要手动关闭
#t.done()
#time.sleep=10

#太阳花
#turtle.color(color1, color2)
#同时设置pencolor=color1, fillcolor=color2
#默认第一画笔颜色,第二为填充颜色
t.color("red", "yellow")
#画笔速度
#画笔绘制的速度范围[0,10]整数,数字越大越快
t.speed(10)
#注意颜色填充fill需要begin和end之间
#类似一对括号
t.begin_fill()

#下划线表示 临时变量, 仅用一次,后面无需再用到
for _ in range(50):    #向前走长度=distance
    t.forward(200)
    #向左转,逆时针转动角度=degree
    t.left(170)
t.end_fill()
t.clear()

#t.done()
#画圆和多边形
from turtle import *

#turtle.circle(radius, extent=None, steps=None)
#extent为度数,默认360°,也就是一圈
#steps数值越大,圆的弧线越平滑,一般推荐50,不设置就是默认
#circle(100) #默认360°为一圈
pu()
goto(-100,0)
pd()
circle(200,360,50)  #圆
circle(200,360,3) #为三角形
circle(200,360,9)  #为9边形

#done()
clear()
reset()

#同心圆代码
from turtle import *
 
#初始圆(最内部的圆)的半径
r=50
#同心圆间的距离
linew=30
 
#circle(r)
# 修改画笔宽度
#pensize(5)
# for循环,用于绘制同心圆
for i in range(1,5):
    # 画笔抬起(不会在窗体上留下痕迹)
    penup()
    # 移动画笔到坐标(0,-10*i)
    #去某个坐标点
    goto(0,-r*i)
    # 画笔落下(开始在窗体上留下痕迹)
    pendown()
    # 在循环中不断绘制半径不同的圆
    circle(r*i)
 
#done()
#time.sleep(3)
clear()

#roll line
import turtle as t

t.bgcolor("black")
sides=6  #6边
colors=["red","yellow","green","blue","orange","purple"]
 
#120为圈数,层数
for x in range(120):
    t.pencolor(colors[x%sides])
    t.forward(x*3/sides+x)
    t.left(360/sides+1)
    t.width(x*sides/200)
 
#t.done()
t.clear()
t.reset()


#输入文字的代码

import turtle as t

 
#画布的背景颜色设置
t.bgcolor("black")
 
#textinput是调用tkinter的弹出框
#第一个字符串为弹出窗口的标题名
#第二个字符串为输入框上面的文字名
my_name=t.textinput("输入你的姓名","你的名字?")
 
colors=["red","yellow","purple","blue"]
 
#100为一百圈
for x in range(50):
    #画笔的颜色选择
    t.pencolor(colors[x%4])
    #提笔
    t.penup()
    #向前步长
    t.forward(x*4)
    #落笔
    t.pendown()
    #文字输出
    t.write(my_name,font=("Arial",int((x+4)/4),"bold"))
    #向左转动92°
    t.left(92)

#结束后手动关闭窗口
#t.done()
t.clear()
t.reset()

#画树
#熟悉可能的缩写
 
from turtle import *
from random import *
from math import *
 
def tree(n, l):
    pd() # 下笔 pendown
    # 阴影效果
    t = cos(radians(heading() + 45)) / 8 + 0.25
    pencolor(t, t, t)
    pensize(n / 3)
    forward(l) # 画树枝,fd=forward
 
 
    if n > 0:
        b = random() * 15 + 10 # 右分支偏转角度
        c = random() * 15 + 10 # 左分支偏转角度
        d = l * (random() * 0.25 + 0.7) # 下一个分支的长度
        # 右转一定角度,画右分支
        right(b)
        tree(n - 1, d)
        # 左转一定角度,画左分支
        left(b + c)
        tree(n - 1, d)
 
        # 转回来
        right(c)
    else:
        # 画叶子
        right(90)
        n = cos(radians(heading() - 45)) / 4 + 0.5
        pencolor(n, n*0.8, n*0.8)
        circle(3)
        left(90)
 
        # 添加0.3倍的飘落叶子
        if(random() > 0.7):
            pu()
            # 飘落
            t = heading()
            an = -40 + random()*40
            setheading(an)
            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
            forward(dis)
            setheading(t)
 
 
            # 画叶子
            pd()  #pendown
            right(90)
            n = cos(radians(heading() - 45)) / 4 + 0.5
            pencolor(n*0.5+0.5, 0.4+n*0.4, 0.4+n*0.4)
            circle(2)
            left(90)
            pu()  #penup
 
            #返回
            t = heading()
            setheading(an)
            backward(dis)
            setheading(t)
 
    pu()  #penup=提笔
    backward(l)# 退回
 
#bgcolor(0.5, 0.5, 0.5) # 背景色
bgcolor('black')
ht() # 隐藏turtle=hideturtle
speed(0) # 速度,1-10渐进,0最快
tracer(0, 0)
pu() # 抬笔
backward(100)
left(90) # 左转90度
pu() # 抬笔
backward(300) # 后退300
tree(12, 100) # 递归7层
done()

cnliutz

计算机基础教师

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注