Python繪圖魔法之如何用turtle庫開啟你的編程藝術(shù)之旅
前言
在python存在一個簡單易用的繪圖庫,它就是 turtle。
Python 的 turtle 模塊是一種簡單易用的繪圖庫,適合用于繪制圖形和動畫。它以“海龜”(Turtle)作為繪圖工具,模擬一只“海龜”在平面上移動,通過命令控制其運(yùn)動軌跡來繪制各種圖案。
Turtle 特別適合初學(xué)者學(xué)習(xí)編程邏輯和圖形學(xué),因?yàn)樗慕涌谥庇^,操作簡單。
在本篇博客,我會帶領(lǐng)著大家學(xué)會 turtle庫的使用。
1. turtle的常用功能
1.1 基本操作
| 方法 | 描述 |
|---|---|
turtle.forward(x) | 向前移動 x 像素 |
turtle.backward(x) | 向后移動 x 像素 |
turtle.left(angle) | 向左旋轉(zhuǎn)指定角度(單位:度) |
turtle.right(angle) | 向右旋轉(zhuǎn)指定角度(單位:度) |
turtle.penup() | 提起畫筆(移動時不繪制軌跡) |
turtle.pendown() | 放下畫筆(移動時繪制軌跡) |
turtle.goto(x, y) | 移動到坐標(biāo) (x, y) |
turtle.speed(speed) | 設(shè)置繪圖速度,范圍從 0(最快)到 10 |
turtle.hideturtle() | 隱藏海龜圖標(biāo) |
turtle.showturtle() | 顯示海龜圖標(biāo) |
1.2 設(shè)置畫筆屬性
| 方法 | 描述 |
|---|---|
turtle.color(color) | 設(shè)置畫筆顏色,支持字符串如 "red" 或 RGB |
turtle.fillcolor(color) | 設(shè)置填充顏色 |
turtle.begin_fill() | 開始填充區(qū)域 |
turtle.end_fill() | 結(jié)束填充區(qū)域 |
turtle.pensize(width) | 設(shè)置畫筆寬度 |
1.3 設(shè)置窗口屬性
| 方法 | 描述 |
|---|---|
turtle.title(title) | 設(shè)置窗口標(biāo)題 |
turtle.bgcolor(color) | 設(shè)置窗口背景顏色 |
turtle.setup(width, height) | 設(shè)置窗口大小 |
turtle.reset() | 重置畫布和海龜狀態(tài) |
turtle.clearscreen() | 清除整個屏幕 |
以上的功能,只要用代碼敲遍就會完全明白了,下面讓我們來看具體的案例吧。
2. 繪圖操作
要想學(xué)會turtle庫最好的方式就是直接上手,所以介紹函數(shù)時不會浪費(fèi)過多的時間,只要用這些函數(shù)實(shí)現(xiàn)完以下簡單的圖形后,對于turtle的操作也就大概沒有問題了。
2.1 正方形繪制
要繪制正方形,肯定需要知道正方形的圖形,相信大家對于這個肯定是沒有問題的,擁有4條相同的邊且4個角都為直角。這也就是繪制正方形的關(guān)鍵,因?yàn)?code>turtle是模擬一只海龜?shù)牡囊苿樱灰尯}數(shù)囊苿榆壽E滿足條件就可以了。
海龜先向前移動x單位的距離,然后向右轉(zhuǎn)再移動x單位的距離,然后在右轉(zhuǎn)移動x單位的距離,最后在右轉(zhuǎn)移動x單位的距離。因?yàn)椴僮魃婕傲酥貜?fù),我們可以將其寫為循環(huán)。
import turtle #導(dǎo)包
t = turtle.Turtle()#先創(chuàng)建對象
turtle.title('我是一個正方形哦~')# 為畫布添加標(biāo)題(可不寫)
for _ in range(4):
t.forward(100) #向前移動100個單位的距離
t.right(90) #開始向右轉(zhuǎn)90度
turtle.done() #保持畫布的存在
讓我們來看看效果吧
可以發(fā)現(xiàn),初始時海龜是咋畫布的正中間的,而且海龜?shù)钠聊幌蛴?,這點(diǎn)需要記得呢。
那么是否可以移動海龜,不讓海龜從初始(0,0)開始移動。
當(dāng)然也是可以的,可以使用turtle.goto(),不過當(dāng)你使用時,你一定會發(fā)現(xiàn),怎么海龜還是移動過去的,而且還有移動痕跡,這時候就需要我們?nèi)グ堰@些痕跡去除了,用到函數(shù)turtle.penup和turtle.pendown,如果現(xiàn)在我還不想看到那個海龜turtle.hideturtle()這個函數(shù)就有作用了。
同時我們還可以控制速度turtle.speed()以下是功能大雜燴的演示:
import turtle
turtle.title('功能測試')
t = turtle.Turtle()
t.speed(0) # 設(shè)置速度
t.hideturtle() #隱藏海龜
t.penup() #提起畫筆
t.goto(-300,300) #跳轉(zhuǎn)到指定坐標(biāo)
t.pendown() #放放下畫筆
t.speed(1) #重新設(shè)置速度
for _ in range(4):
t.forward(100)
t.right(90)
turtle.done()

要注意的是關(guān)于turtle.speed(n)函數(shù),n為0是最快的,然后從1開始速度依次增加。
2.2 正多邊形繪制
有了正方形的前車之鑒,多邊形的繪制就非常簡單了,比較正方形就正四邊形。
import turtle
turtle.title('是多邊形哦~')
# 以下的goto函數(shù)是為了方便我截圖
t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-350,350)
t.pendown()
sides = 6 #正多邊形的邊數(shù)
for _ in range(sides):
t.forward(100)
t.right(360/sides) #因?yàn)槭钦呅?,所以旋轉(zhuǎn)60度
turtle.done()

如果我把邊數(shù)無限制的增加,是不是就得到了一個圓呢?

近似看成圓,這其實(shí)是正360邊形。
難道在turtle中繪制圓,只能這樣繪制正多邊形嗎,也不是,下一個圖形就圓的繪制了。
2.3 同心圓的繪制
繪制同心圓前,圓的繪制還是要知道的。
import turtle
turtle.title('我是圓哦~')
t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-250,200)
t.pendown()
t.circle(100) #繪制一個半徑為100單位的圓
turtle.done()

接下來就同心圓的繪制,因?yàn)槭峭膱A,這些圓的圓心都是相同的但是半徑不同。那么只要我寫一個循環(huán)讓圓的半徑不斷地變大集就可以了,為了效果更豐富,我會讓它們的顏色都不同
import turtle
import random
arr = ['red','green','pink','gold','blue','yellow','black','orange']
n = len(arr)
turtle.title('是同心圓呢~')
t = turtle.Turtle()
t.speed(10)
for radius in range(20,101,20):
t.penup()
t.goto(0,-radius) #移動到新圓的起點(diǎn)
t.pendown()
t.color(arr[random.randint(0,n-1)])
t.circle(radius)
turtle.done()

畫了這么多的圖形。還沒有畫一個填充圖形呢,下面讓我們開始填充圖形的繪制吧
2.4 填充圖形的繪制
其實(shí)填充圖形,只要加兩個函數(shù)就可以了,以正方形來舉例吧
import turtle
turtle.title('要padding了~')
t = turtle.Turtle()
t.speed(0) # 設(shè)置速度
t.hideturtle() #隱藏海龜
t.penup() #提起畫筆
t.goto(-300,300) #跳轉(zhuǎn)到指定坐標(biāo)
t.pendown() #放放下畫筆
t.fillcolor('blue') #設(shè)置填充顏色
t.begin_fill()
t.speed(1) #重新設(shè)置速度
for _ in range(4):
t.forward(100)
t.right(90)
t.end_fill()
turtle.done()

2.5 五角星的繪制
畫到現(xiàn)在,turtle庫的內(nèi)容,大家應(yīng)該都是沒有問題了,可能更重要的就是圖形怎么畫。就像下面的五角星,你知道五角星怎么畫嗎?
其實(shí)和正多邊形沒什么區(qū)別,找到角度就可以了。
import turtle
turtle.title('我是五角星~')
t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-300,300)
t.pendown()
for _ in range(5):
t.forward(100)
t.right(144) #五角星的角度
turtle.done()

2.6 螺旋圖案的繪制
螺旋圖形的繪制,重在螺旋,對于角度要使用不規(guī)則的角度,否則就無法形成螺旋了。
import turtle
t = turtle.Turtle()
t.speed(0) # 設(shè)置最快速度
colors = ["red", "blue", "green", "orange", "purple"]
for i in range(1000):
t.color(colors[i % len(colors)]) # 循環(huán)使用顏色
t.forward(i * 2)
t.right(91) # 稍微不規(guī)則的角度,形成螺旋圖案
turtle.done()
效果還是非常不錯了

如果我們使用的90度的規(guī)則角度呢?

有點(diǎn)暈了~
3. turtle的進(jìn)階操作
- 通過
turtle.shape()改變海龜?shù)男螤睢?/li>
turtle.shape("turtle") # 改為烏龜形狀
turtle.shape("circle") # 改為圓形
turtle.shape("triangle") # 改為三角形
- 支持簡單的事件響應(yīng)(如鍵盤和鼠標(biāo)事件)
import turtle
def move_forward():
t.forward(50)
def turn_left():
t.left(45)
t = turtle.Turtle()
screen = turtle.Screen()
screen.listen() # 開始監(jiān)聽事件
screen.onkey(move_forward, "Up") # 按上鍵移動
screen.onkey(turn_left, "Left") # 按左鍵旋轉(zhuǎn)
turtle.done()
4. 總結(jié)
Python 的 turtle 庫是一個簡單易用的繪圖工具,它讓你可以通過編寫代碼,像小烏龜一樣在屏幕上自由創(chuàng)作。無論是幾何圖形、藝術(shù)圖案,還是動態(tài)動畫,turtle 都能輕松實(shí)現(xiàn)。它不僅是初學(xué)者學(xué)習(xí)編程邏輯和圖形學(xué)的絕佳入門選擇,也是開發(fā)者探索創(chuàng)意編程的有趣工具。
到此這篇關(guān)于Python繪圖魔法之如何用turtle庫的文章就介紹到這了,更多相關(guān)Python繪圖turtle庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3實(shí)現(xiàn)SMTP發(fā)送郵件的實(shí)戰(zhàn)指南
,本文詳細(xì)介紹 Python3 借助smtplib和email庫實(shí)現(xiàn) SMTP 郵件發(fā)送的方法,從基礎(chǔ)到實(shí)戰(zhàn)覆蓋多場景,先講解 SMTP 協(xié)議定義及兩核心庫功能,再說明創(chuàng)建 SMTP 對象和使用sendmail方法的核心語法與參數(shù),需要的朋友可以參考下2025-10-10
python中創(chuàng)建一個包并引用使用的操作方法
python包在開發(fā)中十分常見,一般通過導(dǎo)入包含特定功能的python模塊包進(jìn)行使用。當(dāng)然,也可以自己創(chuàng)建打包模塊,然后發(fā)布,安裝使用,這篇文章主要介紹了python中如何創(chuàng)建一個包并引用使用,需要的朋友可以參考下2022-08-08
Python使用pymupdf實(shí)現(xiàn)PDF加密
這篇文章主要介紹了如何使用 Python 和 wxPython 庫創(chuàng)建一個簡單的圖形用戶界面(GUI)應(yīng)用程序,用于對 PDF 文件進(jìn)行加密,感興趣的小伙伴可以了解下2023-08-08
python實(shí)現(xiàn)給微信公眾號發(fā)送消息的方法
這篇文章主要介紹了python實(shí)現(xiàn)給微信公眾號發(fā)送消息的方法,結(jié)合實(shí)例形式分析了Python針對微信公眾號接口操作的相關(guān)技巧,需要的朋友可以參考下2017-06-06
python中pivot()函數(shù)基礎(chǔ)知識點(diǎn)
在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python中pivot()函數(shù)基礎(chǔ)知識點(diǎn)內(nèi)容,對此有興趣的朋友們可以參考學(xué)習(xí)下。2021-01-01
使用python字典統(tǒng)計CSV數(shù)據(jù)的步驟和示例代碼
為了使用Python字典來統(tǒng)計CSV數(shù)據(jù),我們可以使用內(nèi)置的csv模塊來讀取CSV文件,并使用字典來存儲統(tǒng)計信息,以下是一個詳細(xì)的步驟和完整的代碼示例,需要的朋友可以參考下2024-12-12
python 實(shí)現(xiàn)logging動態(tài)變更輸出日志文件名
這篇文章主要介紹了python 實(shí)現(xiàn)logging動態(tài)變更輸出日志文件名的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
python異步實(shí)現(xiàn)定時任務(wù)和周期任務(wù)的方法
今天小編就為大家分享一篇python異步實(shí)現(xiàn)定時任務(wù)和周期任務(wù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06

