python繪圖模塊之利用turtle畫(huà)圖
模塊之turtle
小故事
前兩天朋友說(shuō):“常文啊!聽(tīng)說(shuō)你會(huì)python,那能不能用python畫(huà)一些好看的圖呢?”然后我特意去學(xué)了一下turtle模塊,現(xiàn)在給大家分享一下。
一、什么是turtle
Turtle是python內(nèi)嵌的繪制線、圓以及其他形狀(包括文本)的圖形模塊。
二、turtle函數(shù)的使用
import turtle turtle.pendown() # 放下畫(huà)筆 turtle.penup() # 抬起畫(huà)筆 turtle.pensize(int) # 設(shè)置畫(huà)筆寬度,值為整數(shù)型 turtle.forward(float) # 講話比向前移動(dòng)一定的角度 turtle.backward(float) # 將畫(huà)筆向后移動(dòng)一定的角度 turtle.right(angle) # 將畫(huà)筆右轉(zhuǎn)一定的角度 turtle.left(angle) # #將畫(huà)筆左轉(zhuǎn)一定的角度 turtle.goto(x,y) # 將畫(huà)筆移動(dòng)到一個(gè)指定的絕對(duì)坐標(biāo) turtle.setx(x) # 設(shè)置畫(huà)筆向x方向移動(dòng)的距離,值為實(shí)數(shù) turtle.sety(y) # 設(shè)置畫(huà)筆向y方向移動(dòng)的距離,值為實(shí)數(shù) turtle.setheading(angle) # 設(shè)定turtle箭頭的方向?yàn)橹付ǚ较颍?–東 90—北 turtle.home() # 將畫(huà)筆返回到原點(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è)置畫(huà)筆速度,為整數(shù)類型,且取值在1-10之間 turtle.color(‘str') # 設(shè)置畫(huà)筆顏色,為字符串類型 turtle.fillcolor(‘str') # 設(shè)置填充顏色,為字符串類型 turtle.begin_fill() # 結(jié)束填充 turtle.end_fill() # 開(kāi)始填充 turtle.filling() # 返回填充狀態(tài),True表示填充,F(xiàn)alse表示沒(méi)有填充 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可見(jiàn),返回turtle turtle.write(‘str',font=(“Arial”,8,“normal”)) # 在turtle位置編寫(xiě)字符串s,字體由字體名、字體大小、字體類型三部分組成 turtle.position() # 獲取畫(huà)筆的坐標(biāo),返回一個(gè)元組,值為浮點(diǎn)型
案例一:基本使用
import turtle import time turtle.pensize(3) turtle.showturtle() # 顯示箭頭 turtle.write("吳常文") # 寫(xiě)字符串 turtle.forward(300) # 前進(jìn)100像素 turtle.color("red") # 畫(huà)筆顏色改為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) # 畫(huà)圓 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:
案例五:愛(ài)心樹(shù)
#!/user/bin/python3 # --*--coding: utf-8 --*-- # @Time: 2021/2/10 21:56 # @Author:吳常文 # @File: 05 愛(ài)心樹(shù) 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)前的方向畫(huà)畫(huà)按照海龜前進(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)的角度,但可以通過(guò)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)榘褳觚敳仄饋?lái)能明顯加快繪圖速度。 # 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)整畫(huà)筆 p.penup() # 向上拉筆——移動(dòng)時(shí)不繪圖。 p.goto(0, -200) # 移動(dòng)海龜?shù)揭粋€(gè)絕對(duì)位置。如果筆放下了,畫(huà)一條線。不要改變海龜?shù)姆较颉? p.pendown() # 向下拉筆——移動(dòng)時(shí)繪圖 這三條語(yǔ)句是一個(gè)組合相當(dāng)于先把筆收起來(lái)再移動(dòng)到指定位置,再把筆放下開(kāi)始畫(huà) # 否則turtle一移動(dòng)就會(huì)自動(dòng)的把線畫(huà)出來(lái) # 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:
案例六:給你一顆愛(ài)心
#!/user/bin/python3 # --*--coding: utf-8 --*-- # @Time: 2021/2/10 22:07 # @Author:吳常文 # @File: 06 愛(ài)心 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() # 畫(huà)筆基礎(chǔ)設(shè)置 t.screensize(1200,800) t.pensize(5) t.hideturtle() t.speed(5) t.pencolor("red") # 畫(huà)筆移動(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() # 畫(huà)筆移動(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() """第一顆副星""" # 畫(huà)筆移動(dòng) Skip(t,-120,10) # 繪制小五星 draw(t,5,30,144) """第二顆副星""" # 畫(huà)筆移動(dòng) Skip(t,-80,50) # 繪制小五星 draw(t,5,30,144) """第三顆副星""" # 畫(huà)筆移動(dòng) Skip(t,-80,110) # 繪制小五星 draw(t,5,30,144) """第四顆副星""" # 畫(huà)筆移動(dòng) Skip(t,-120,150) # 繪制小五星 draw(t,5,30,144) t.done()
效果圖7:
總結(jié)
到此這篇關(guān)于python模塊教程之利用turtle畫(huà)圖的文章就介紹到這了,更多相關(guān)python模塊之turtle畫(huà)圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法
今天小編就為大家分享一篇Python 十六進(jìn)制整數(shù)與ASCii編碼字符串相互轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程
這篇文章主要介紹了用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程,包括單位格式轉(zhuǎn)換、分類匯總等基本操作,需要的朋友可以參考下2015-03-03python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并訪問(wèn)最近來(lái)訪者實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并訪問(wèn)最近來(lái)訪者實(shí)例,該實(shí)例是在前面登錄人人網(wǎng)實(shí)例基礎(chǔ)上的擴(kuò)展,是非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-09-09將Django使用的數(shù)據(jù)庫(kù)從MySQL遷移到PostgreSQL的教程
這篇文章主要介紹了將Django使用的數(shù)據(jù)庫(kù)從MySQL遷移到PostgreSQL的教程,同時(shí)提到了一些注意事項(xiàng),需要的朋友可以參考下2015-04-04Django前端BootCSS實(shí)現(xiàn)分頁(yè)的方法
本文主要介紹了Django前端BootCSS實(shí)現(xiàn)分頁(yè)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11Python數(shù)據(jù)結(jié)構(gòu)詳細(xì)
本文將詳細(xì)講解Python的數(shù)據(jù)結(jié)構(gòu),下面我們將講解Python關(guān)于關(guān)于列表更多的內(nèi)容以及del 語(yǔ)句和元組和序列等一些具體內(nèi)容,需要的下伙伴可以參考一下2021-09-09