想學(xué)畫畫?python滿足你!
python中的繪圖工具有不少,比如Matplotlib等等,但這些只能用來(lái)畫表格,今天我們來(lái)介紹一款可以用來(lái)畫畫的庫(kù)——turtle。
一、繪圖原理
我們通過(guò)控制初始位置為(0,0)的海龜進(jìn)行移動(dòng),根據(jù)一組函數(shù)指令的控制,在平面坐標(biāo)系中移動(dòng),從而在它爬行的路徑上繪制了圖形。
二、開(kāi)始繪圖
turtle是python自帶的庫(kù),我們直接import導(dǎo)入即可
import turtle
設(shè)置繪圖區(qū)域?qū)傩?/h3>
繪圖區(qū)域背景色的設(shè)置
turtle.bgcolor('blue')
選擇想要的顏色即可
繪圖區(qū)域大小設(shè)置
turtle.setup(width=200,height=100)
參數(shù):
width, height:
輸入寬和高為整數(shù)時(shí), 表示像素;
為小數(shù)時(shí), 表示占據(jù)電腦屏幕的比例。
畫筆繪制圖形
讓我們先簡(jiǎn)單的畫一條直線
turtle.forward(100)
forward()是turtle的內(nèi)置函數(shù),表示從原點(diǎn)向前進(jìn)多少距離。我們還可以控制畫筆的角度讓他轉(zhuǎn)彎。與之對(duì)應(yīng)的是backward(),后退多少距離
turtle.backward(100) turtle.left(60) turtle.forward(100)
這里的left()就表示畫筆的轉(zhuǎn)彎方向和角度了,相應(yīng)的right則為向右轉(zhuǎn)。
如圖我們后退了100的距離然后向左偏轉(zhuǎn)60°又前進(jìn)了100距離。其他常用參數(shù)請(qǐng)參考下面的表格
畫筆運(yùn)動(dòng)函數(shù)
函數(shù) | 描述 |
---|---|
turtle.forward(distance) | 向當(dāng)前畫筆方向移動(dòng)distance像素長(zhǎng) |
turtle.backward(distance) | 向當(dāng)前畫筆相反方向移動(dòng)distance像素長(zhǎng)度 |
turtle.right(degree) | 順時(shí)針移動(dòng)degree° |
turtle.left(degree) | 逆時(shí)針移動(dòng)degree° |
turtle.pendown() | 移動(dòng)時(shí)繪制圖形,缺省時(shí)也為繪制 |
turtle.goto(x,y) | 將畫筆移動(dòng)到坐標(biāo)為x,y的位置 |
turtle.penup() | 移動(dòng)時(shí)不繪制圖形,提起筆,用于另起一個(gè)地方繪制時(shí)用 |
turtle.speed(speed) | 畫筆繪制的速度范圍[0,10]整數(shù) |
turtle.circle() | 畫圓,半徑為正(負(fù)),表示圓心在畫筆的左邊(右邊)畫圓 |
畫筆參數(shù)
命令 | 說(shuō)明 |
---|---|
turtle.pensize(width) | 繪制圖形時(shí)的寬度 |
turtle.pencolor() | 畫筆顏色 |
turtle.fillcolor(colorstring) | 繪制圖形的填充顏色 |
turtle.color(color1, color2) | 同時(shí)設(shè)置pencolor=color1, fillcolor=color2 |
turtle.filling() | 返回當(dāng)前是否在填充狀態(tài) |
turtle.begin_fill() | 準(zhǔn)備開(kāi)始填充圖形 |
turtle.end_fill() | 填充完成; |
turtle.hideturtle() | 隱藏箭頭顯示; |
turtle.showturtle() | 與hideturtle()函數(shù)對(duì)應(yīng) |
全局控制命令
命令 | 說(shuō)明 |
---|---|
turtle.clear() | 清空turtle窗口,但是turtle的位置和狀態(tài)不會(huì)改變 |
turtle.reset() | 清空窗口,重置turtle狀態(tài)為起始狀態(tài) |
turtle.undo() | 撤銷上一個(gè)turtle動(dòng)作 |
turtle.isvisible() | 返回當(dāng)前turtle是否可見(jiàn) |
stamp() | 復(fù)制當(dāng)前圖形 |
turtle.write(s[,font=("font-name",font_size,"font_type")]) | 寫文本,s為文本內(nèi)容,font是字體的參數(shù),里面分別為字體名稱,大小和類型;font為可選項(xiàng), font的參數(shù)也是可選項(xiàng) |
三、for循環(huán)語(yǔ)句
如果我們要畫一個(gè)正方形按照上邊的方法代碼為
import turtle turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90)
一個(gè)簡(jiǎn)單的四邊形就要如此重復(fù),繪制更復(fù)雜的圖形還這樣做的話就顯得不科學(xué)了,這時(shí)候我們就要用到for循環(huán)了。使用for循環(huán)的語(yǔ)句優(yōu)化過(guò)的代碼為
totalTimes=4 for times in range(totalTimes): turtle.forward(100) turtle.left(90)
四、簡(jiǎn)單示例
繪制五角星
import turtle t=turtle.Pen() #獲得畫筆 t.hideturtle() #隱藏箭頭 t.begin_fill() #填充圖形 for x in range(1, 6): t.forward(100) t.left(216) #在這里先向右直行,然后左轉(zhuǎn)216°(左下,正五角星度數(shù)180/5=36°) t.end_fill() #填充完成
繪制櫻花樹(shù)
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('snow') else: t.color('lightcoral') # 淡珊瑚色 t.pensize(branch / 2) else: t.color('sienna') # 赭(zhě)色 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() # 掉落的花瓣 def Petal(m, t): for i in range(m): a = 200 - 400 * random.random() b = 10 - 20 * random.random() t.up() t.forward(b) t.left(90) t.forward(a) t.down() t.color('lightcoral') # 淡珊瑚色 t.circle(1) t.up() t.backward(a) t.right(90) t.backward(b) # 繪圖區(qū)域 t = T.Turtle() # 畫布大小 w = T.Screen() t.hideturtle() # 隱藏畫筆 t.getscreen().tracer(5, 0) w.screensize(bg='wheat') # wheat小麥 t.left(90) t.up() t.backward(150) t.down() t.color('sienna') # 畫櫻花的軀干 Tree(60, t) # 掉落的花瓣 Petal(200, t) w.exitonclick()
更多關(guān)于python的文章,歡迎關(guān)注python客棧。
以上就是想學(xué)畫畫?python滿足你!的詳細(xì)內(nèi)容,更多關(guān)于python 畫畫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- python中turtle庫(kù)的簡(jiǎn)單使用教程
- Python turtle庫(kù)的畫筆控制說(shuō)明
- 使用python圖形模塊turtle庫(kù)繪制櫻花、玫瑰、圣誕樹(shù)代碼實(shí)例
- 使用python的turtle函數(shù)繪制一個(gè)滑稽表情
- python使用turtle庫(kù)繪制奧運(yùn)五環(huán)
- python turtle工具繪制四葉草的實(shí)例分享
- 解決Python3.8用pip安裝turtle-0.0.2出現(xiàn)錯(cuò)誤問(wèn)題
- Python使用turtle庫(kù)繪制小豬佩奇(實(shí)例代碼)
- python turtle 繪制太極圖的實(shí)例
相關(guān)文章
Python對(duì)列表的操作知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理了關(guān)于Python對(duì)列表的操作知識(shí)點(diǎn)總結(jié)以及實(shí)例代碼運(yùn)用,需要的朋友們跟著學(xué)習(xí)下。2019-08-08pytorch實(shí)現(xiàn)手寫數(shù)字圖片識(shí)別
這篇文章主要為大家詳細(xì)介紹了pytorch實(shí)現(xiàn)手寫數(shù)字圖片識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05python3中dict.keys().sort()用不了的解決方法
本文主要介紹了python3中dict.keys().sort()用不了的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12python文件操作相關(guān)知識(shí)點(diǎn)總結(jié)整理
這篇文章主要介紹了python文件操作相關(guān)知識(shí)點(diǎn),整理匯總了Python文件操作所涉及的常見(jiàn)函數(shù)與方法,并給出了實(shí)例代碼予以總結(jié)歸納,需要的朋友可以參考下2016-02-02舉例講解Python面相對(duì)象編程中對(duì)象的屬性與類的方法
這篇文章主要介紹了Python面相對(duì)象編程中對(duì)象的屬性與類的方法,類和對(duì)象以及方法這些都是面相對(duì)象的編程語(yǔ)言所具有的基礎(chǔ)內(nèi)容,需要的朋友可以參考下2016-01-01Python網(wǎng)絡(luò)爬蟲(chóng)之爬取微博熱搜
這篇文章主要介紹了Python網(wǎng)絡(luò)爬蟲(chóng)之爬取微博熱搜的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04深入淺析NumPy庫(kù)中的numpy.diag()函數(shù)
通過(guò)本文的介紹,我們深入了解了NumPy庫(kù)中numpy.diag()函數(shù)的用法和應(yīng)用,從基本用法到高級(jí)特性,再到在線性代數(shù)中的應(yīng)用,我們逐步展示了numpy.diag()在處理對(duì)角矩陣和相關(guān)問(wèn)題時(shí)的強(qiáng)大功能,需要的朋友可以參考下2024-05-05