模塊之turtle
小故事
前兩天朋友說:“常文??!聽說你會(huì)python,那能不能用python畫一些好看的圖呢?”然后我特意去學(xué)了一下turtle模塊,現(xiàn)在給大家分享一下。
一、什么是turtle
Turtle是python內(nèi)嵌的繪制線、圓以及其他形狀(包括文本)的圖形模塊。
二、turtle函數(shù)的使用
import turtle
turtle.pendown() # 放下畫筆
turtle.penup() # 抬起畫筆
turtle.pensize(int) # 設(shè)置畫筆寬度,值為整數(shù)型
turtle.forward(float) # 講話比向前移動(dòng)一定的角度
turtle.backward(float) # 將畫筆向后移動(dòng)一定的角度
turtle.right(angle) # 將畫筆右轉(zhuǎn)一定的角度
turtle.left(angle) # #將畫筆左轉(zhuǎn)一定的角度
turtle.goto(x,y) # 將畫筆移動(dòng)到一個(gè)指定的絕對(duì)坐標(biāo)
turtle.setx(x) # 設(shè)置畫筆向x方向移動(dòng)的距離,值為實(shí)數(shù)
turtle.sety(y) # 設(shè)置畫筆向y方向移動(dòng)的距離,值為實(shí)數(shù)
turtle.setheading(angle) # 設(shè)定turtle箭頭的方向?yàn)橹付ǚ较颍?–東 90—北
turtle.home() # 將畫筆返回到原點(diǎn)
turtle.circle(r,ext,steps=int) # 繪制一個(gè)設(shè)置半徑和階數(shù)的圓(設(shè)置之后會(huì)繪制多邊形)
turtle.dot(d,color) # 繪制一個(gè)指定直徑的圓點(diǎn),顏色為字符串類型
turtle.undo() #取消最后一個(gè)圖操作
turtle.speed(s) # 設(shè)置畫筆速度,為整數(shù)類型,且取值在1-10之間
turtle.color(‘str') # 設(shè)置畫筆顏色,為字符串類型
turtle.fillcolor(‘str') # 設(shè)置填充顏色,為字符串類型
turtle.begin_fill() # 結(jié)束填充
turtle.end_fill() # 開始填充
turtle.filling() # 返回填充狀態(tài),True表示填充,F(xiàn)alse表示沒有填充
turtle.clear() # 清除窗口所有內(nèi)容
turtle.reset() # 清除窗口,將狀態(tài)和位置復(fù)位為初始值
turtle.screensize(w,h) # 設(shè)置turtle顯示的大小,并設(shè)置寬度和高度
turtle.hideturtle() # 隱藏turtle箭頭
turtle.showturtle() # 顯示turtle窗口
turtle.done() # 使turtle窗口不會(huì)自動(dòng)消失
turtle.isvisible() # 如果turtle可見,返回turtle
turtle.write(‘str',font=(“Arial”,8,“normal”)) # 在turtle位置編寫字符串s,字體由字體名、字體大小、字體類型三部分組成
turtle.position() # 獲取畫筆的坐標(biāo),返回一個(gè)元組,值為浮點(diǎn)型
案例一:基本使用
import turtle
import time
turtle.pensize(3)
turtle.showturtle() # 顯示箭頭
turtle.write("吳常文") # 寫字符串
turtle.forward(300) # 前進(jìn)100像素
turtle.color("red") # 畫筆顏色改為red
turtle.left(90) # 箭頭左轉(zhuǎn)90度
turtle.forward(300)
turtle.goto(0,50) # 去坐標(biāo)(0,50)
turtle.goto(0,0) # 回到原點(diǎn)
turtle.penup() # 抬筆,這樣路徑向上
turtle.goto(0,300)
turtle.goto(0,0)
turtle.pendown() # 下筆,這樣路徑向下
turtle.goto(0,50)
turtle.goto(50,50)
turtle.circle(100) # 畫圓
time.sleep(5) # 睡5秒
效果圖1:
案例二:五角星
import turtle
import time
turtle.pensize(5)
turtle.pencolor("yellow")
turtle.fillcolor("red")
turtle.begin_fill()
for _ in range(5):
turtle.forward(200)
turtle.right(144)
turtle.end_fill()
time.sleep(2)
turtle.penup()
turtle.goto(-150, -120)
turtle.color("violet")
turtle.write("五角星", font=('Arial', 22, 'normal'))
turtle.mainloop()
效果圖2:
案例三:奧運(yùn)五環(huán)
#!/user/bin/python3
# --*--coding: utf-8 --*--
# @Time: 2021/2/10 12:22
# @Author:吳常文
# @File: 03奧運(yùn)五環(huán)
import turtle
import time
turtle.width(10) # 寬度
turtle.color("red")
turtle.circle(50)
turtle.color("blue")
turtle.penup()
turtle.goto(120,0)
turtle.pendown()
turtle.circle(50)
turtle.color("black")
turtle.penup()
turtle.goto(240,0)
turtle.pendown()
turtle.circle(50)
turtle.color("yellow")
turtle.penup()
turtle.goto(60,-50)
turtle.pendown()
turtle.circle(50)
turtle.color("green")
turtle.penup()
turtle.goto(180,-50)
turtle.pendown()
turtle.circle(50)
time.sleep(3)
效果圖3:
案例四:給你一朵玫瑰花
import turtle
import time
# 設(shè)置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)
# 花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()
# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)
# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)
# 葉子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)
# 葉子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200, 60)
turtle.up()
turtle.goto(100, -300)
turtle.write("Send you a flower, bring you home")
time.sleep(5)
效果圖4:
案例五:愛心樹
#!/user/bin/python3
# --*--coding: utf-8 --*--
# @Time: 2021/2/10 21:56
# @Author:吳常文
# @File: 05 愛心樹
from turtle import Turtle, mainloop
import turtle
def tree(plist, l, a, f):
""" plist是筆的列表
l是分支
a的長(zhǎng)度是兩個(gè)分支之間夾角的一半
f是分支之間逐級(jí)縮短的系數(shù)。"""
if l > 5: #
lst = []
for p in plist:
p.forward(
l) # 沿著當(dāng)前的方向畫畫按照海龜前進(jìn)的方向,向前移動(dòng)指定的距離。
q = p.clone() # 創(chuàng)建并返回具有相同位置、標(biāo)題和turtle屬性的海龜?shù)目寺 ?
p.left(a) # 以角度單位將海龜向左翻轉(zhuǎn)
q.right(
a) # 以角度單位將海龜右轉(zhuǎn),nit是默認(rèn)的角度,但可以通過degrees()和radians()函數(shù)設(shè)置。
lst.append(p) # 將元素增加到列表的最后
lst.append(q)
tree(lst, l * f, a, f)
def main():
p = Turtle()
p.color("red")
p.pensize(4)
# p.setundobuffer(None)
p.hideturtle() # 讓烏龜隱形。這是一個(gè)好主意,當(dāng)你在做一些復(fù)雜的繪圖時(shí),
# 因?yàn)榘褳觚敳仄饋砟苊黠@加快繪圖速度。
# p.speed(10)
# p.getscreen().tracer(1,0)#Returtle.write("You are the secret of my heart")
p.speed(4)
# 然后可以為該對(duì)象調(diào)用TurtleScreen方法。
p.left(90) # 方向以角度單位將海龜向左翻轉(zhuǎn)。 調(diào)整畫筆
p.penup() # 向上拉筆——移動(dòng)時(shí)不繪圖。
p.goto(0,
-200) # 移動(dòng)海龜?shù)揭粋€(gè)絕對(duì)位置。如果筆放下了,畫一條線。不要改變海龜?shù)姆较颉?
p.pendown() # 向下拉筆——移動(dòng)時(shí)繪圖 這三條語(yǔ)句是一個(gè)組合相當(dāng)于先把筆收起來再移動(dòng)到指定位置,再把筆放下開始畫
# 否則turtle一移動(dòng)就會(huì)自動(dòng)的把線畫出來
# t = tree([p], 200, 65, 0.6375)
t = tree([p], 200, 65, 0.6375)
turtle.down()
turtle.goto(-80, 70)
turtle.write("There's a heart for you")
turtle.done()
main()
效果圖5:
案例六:給你一顆愛心
#!/user/bin/python3
# --*--coding: utf-8 --*--
# @Time: 2021/2/10 22:07
# @Author:吳常文
# @File: 06 愛心
import turtle
import time
def func():
for i in range(200):
turtle.right(1)
turtle.forward(1)
turtle.color('red', 'pink')
turtle.pensize(2)
turtle.speed(10)
turtle.goto(0, 0)
turtle.begin_fill()
turtle.left(140)
turtle.forward(112)
func()
turtle.left(120)
func()
turtle.forward(112)
turtle.end_fill()
turtle.pensize(5)
turtle.up()
turtle.goto(-80, 122.7)
turtle.left(70)
turtle.down()
# turtle.forward(0)
turtle.up()
turtle.goto(100, -10)
turtle.write("There's a heart for you")
turtle.done()
time.sleep(3)
效果圖6:
案例七:五星紅旗
import turtle as t
# 位移函數(shù)
def Skip(t,x,y):
t.penup()
t.goto(x,y)
t.pendown()
# 繪制五星紅旗
def draw(t,x,y,z):
t.begin_fill()
for i in range(x):
t.forward(y)
t.left(z)
t.end_fill()
# 畫筆基礎(chǔ)設(shè)置
t.screensize(1200,800)
t.pensize(5)
t.hideturtle()
t.speed(5)
t.pencolor("red")
# 畫筆移動(dòng)
Skip(t,0,-200)
# 繪制國(guó)旗
t.fillcolor("red")
t.begin_fill()
t.forward(300)
t.left(90)
t.forward(400)
t.left(90)
t.forward(600)
t.left(90)
t.forward(400)
t.left(90)
t.forward(300)
t.end_fill()
# 畫筆移動(dòng)
Skip(t,-250,115)
# 繪制大五角星
t.pencolor("yellow")
t.fillcolor("yellow")
t.begin_fill()
for i in range(5):
t.forward(100)
t.right(144)
t.end_fill()
"""第一顆副星"""
# 畫筆移動(dòng)
Skip(t,-120,10)
# 繪制小五星
draw(t,5,30,144)
"""第二顆副星"""
# 畫筆移動(dòng)
Skip(t,-80,50)
# 繪制小五星
draw(t,5,30,144)
"""第三顆副星"""
# 畫筆移動(dòng)
Skip(t,-80,110)
# 繪制小五星
draw(t,5,30,144)
"""第四顆副星"""
# 畫筆移動(dòng)
Skip(t,-120,150)
# 繪制小五星
draw(t,5,30,144)
t.done()
效果圖7:
總結(jié)
到此這篇關(guān)于python模塊教程之利用turtle畫圖的文章就介紹到這了,更多相關(guān)python模塊之turtle畫圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python畫圖工具M(jìn)atplotlib庫(kù)常用命令簡(jiǎn)述
- Python中matplotlib如何改變畫圖的字體
- Python超簡(jiǎn)單容易上手的畫圖工具庫(kù)推薦
- Python基礎(chǔ)之畫圖神器matplotlib
- Python畫圖小案例之小雪人超詳細(xì)源碼注釋