python turtle绘画案例教程

.python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 :import turtle
1
绘画直线

- turtle.penup():画笔抬起->暂停绘画
- turtle.color():设置颜色 第二个参数是画笔的颜色
- turtle.goto():画笔绘画线段
- turtle.pendown():画笔落下->开始绘画
import turtle
turtle.penup()
turtle.color('black', 'black')
turtle.goto(200, 100)
turtle.pendown()
turtle.goto(200, -100)
turtle.goto(-200, -100)
turtle.goto(-200, 100)
turtle.goto(200, 100)
turtle.goto(5, 215)
turtle.goto(-200, 100)
turtle.done()
绘画好的效果如图
2
绘画圆形

- turtle.width():线段的宽度
- turtle.color("color"):设置颜色
- turtle.circle():圆的半径
import turtle
turtle.width(20)
turtle.color("black")
turtle.circle(200) # 画圆
turtle.done()
现在你已经会画圆了
3
绘画彩色图形

- speed(9):画笔速度
- pensize(2):画笔的宽度
- bgcolor("black"):画布背景色
- left(91) :向左侧旋转
from turtle import *
speed(9) # 画笔速度
pensize(2) # 画笔的宽度
bgcolor("black") # 画布背景色
colors = ["red","yellow","purple","blue"] # 定义画笔线色
for x in range(400): # 循环一次 画一条线
forward(2*x) # 向当前方向前进n像素
color(colors[x % 4]) # 根据求余 调整画笔线色
left(91) # 向左旋转91度
mainloop()
把现在你也会旋转了
4
绘画时钟

现在在你刚刚画的那些的基础上加上一些函数 定时延迟等等
import turtle
from datetime import *
# 抬起画笔,向前运动一段距离放下
def Skip(step):
turtle.penup()
turtle.forward(step)
turtle.pendown()
def mkHand(name, length):
# 注册Turtle形状,建立表针Turtle
turtle.reset()
Skip(-length * 0.1)
# 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.begin_poly()
turtle.forward(length * 1.1)
# 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
turtle.end_poly()
# 返回最后记录的多边形。
handForm = turtle.get_poly()
turtle.register_shape(name, handForm)
def Init():
global secHand, minHand, hurHand, printer
# 重置Turtle指向北
turtle.mode("logo")
# 建立三个表针Turtle并初始化
mkHand("secHand", 135)
mkHand("minHand", 125)
mkHand("hurHand", 90)
secHand = turtle.Turtle()
secHand.shape("secHand")
minHand = turtle.Turtle()
minHand.shape("minHand")
hurHand = turtle.Turtle()
hurHand.shape("hurHand")
for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0)
# 建立输出文字Turtle
printer = turtle.Turtle()
# 隐藏画笔的turtle形状
printer.hideturtle()
printer.penup()
def SetupClock(radius):
# 建立表的外框
turtle.reset()
turtle.pensize(7)
for i in range(60):
Skip(radius)
if i % 5 == 0:
turtle.forward(20)
Skip(-radius - 20)
Skip(radius + 20)
if i == 0:
turtle.write(int(12), align="center", font=("Courier", 14, "bold"))
elif i == 30:
Skip(25)
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-25)
elif (i == 25 or i == 35):
Skip(20)
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-20)
else:
turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
Skip(-radius - 20)
else:
turtle.dot(5)
Skip(-radius)
turtle.right(6)
def Week(t):
week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
return week[t.weekday()]
def Date(t):
y = t.year
m = t.month
d = t.day
return "%s-%d-%d" % (y, m, d)
def Tick():
# 绘制表针的动态显示
t = datetime.today()
second = t.second + t.microsecond * 0.000001
minute = t.minute + second / 60.0
hour = t.hour + minute / 60.0
secHand.setheading(6 * second)
minHand.setheading(6 * minute)
hurHand.setheading(30 * hour)
turtle.tracer(False)
printer.forward(65)
printer.write(Week(t), align="center", font=("Courier", 14, "bold"))
printer.back(130)
printer.write(Date(t), align="center", font=("Courier", 14, "bold"))
printer.home()
turtle.tracer(True)
# 100ms后继续调用tick
turtle.ontimer(Tick, 100)
def main():
# 打开/关闭龟动画,并为更新图纸设置延迟。
turtle.tracer(False)
Init()
SetupClock(160)
turtle.tracer(True)
Tick()
turtle.done()
if __name__ == "__main__":
main()
5
毕业!

加入随机函数 和循环 绘画一个樱花树
# 每次运行 树的形状是随机的
import turtle as T
import random
import time
# 画樱花的躯干(60,t)
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 8 <= branch <= 12:
if random.randint(0, 2) == 0:
t.color('snow') # 白
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 3)
elif branch < 8:
if random.randint(0, 1) == 0:
t.color('pink') # 粉色
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 2)
else:
t.color('sienna')
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
Tree(branch - 10 * b, t)
t.left(40 * a)
Tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='white') # 白色背景
t.left(90)
t.up()
t.backward(100)
t.down()
t.color('sienna')
# 画樱花的躯干
Tree(60, t)
w.exitonclick()
T.done()








更多相关项目
猜你喜欢
评论/提问(已发布 0 条)

