<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
turtle庫是Python語言中一個很流行的繪製影象的函數庫,可以輕鬆地繪製出精美的形狀和圖案,很適合用來引導孩子學習程式設計。
turtle模組(module)是Python語言中的標準模組(內建模組)之一。
【在Python中,模組也稱作庫(Library)】
畫布(canvas),turtle模組展開用於繪圖的區域,可以設定其大小和初始位置。
turtle 中預設的模式為 standard ,其座標原點在畫布(canvas)中心,單位為象素(pixel)。turtle空間座標體系分為位置座標系和角度座標系,畫布預設大小(400, 300),對於位置座標系而言,與數學中的直角座標系相同,正中心的座標就是(0,0),你可以想象一個小烏龜,在一個橫軸為x、縱軸為y的座標系原點,(0,0)位置開始,它根據一組函數指令的控制,在這個平面座標系中移動,從而在它爬行的路徑上繪製了圖形。goto函數有兩個引數X,Y,指的是讓在任何位置的海龜去到達某一個座標的位置。對於角度座標系而言,以x軸正方向為0度,逆時針為角度正值,順時針為角度負值,也與數學中的相同。
import turtle
turtle定義表單(視窗)的大小和位置的函數setup()
setup()函數改變表單(視窗)的大小,確定畫布空間的大小及在螢幕中的位置,格式:
turtle.setup (width,height,startx,starty)
width, height: 輸入寬和高為整數時, 表示畫素; 為小數時, 表示佔據電腦螢幕的比例;(startx, starty): 這一座標表示 矩形視窗左上角頂點的位置, 如果為空,則視窗位於螢幕中心。
參見下圖:
單位為畫素。
螢幕的的左上角為原點。
例、
import turtle turtle.setup(800,500,0,0)
參見如下示意圖:
又如:
turtle.setup(width=0.6, height=0.6) turtle.setup(width=800, height=800, startx=100, starty=100)
turtle定義定義了畫布的大小和背景色函數screensize()
screensize()函數改變畫布的大小和背景色,格式:
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
引數分別為畫布的寬(單位畫素), 高, 背景顏色
如:
import turtle turtle.screensize(480, 360,"green")
表單和畫布不是一個概念。如果畫布大於表單,表單會出現卷軸,如果畫布小於表單,畫布會填充整個表單。想要改變表單(視窗)的大小,不是用screensize函數,要用setup函數。
表單大於畫布,畫布填充了表單。測試程式碼:
import turtle turtle.setup(300,200) turtle.screensize(200,100,"blue") turtle.shape("turtle") #出現小烏龜
執行之,參見下圖:
畫布大於表單,表單出現卷軸。測試程式碼:
import turtle turtle.setup(300,200) turtle.screensize(500,400,"blue") turtle.shape("turtle") #出現小烏龜
執行之,參見下圖:
方法1
import turtle turtle.circle(10) #使用turtle
方法2
from turtle import * circle(10) #使用turtle
方法3
import turtle as t t.circle(10) #使用turtle
turtle庫包含近百個功能函數。在此我們介紹一些常用的函數:
繪製狀態函數:pendown()、penup()、pensize()
別名 | 引數說明 | 功能/作用 | |
pendown() | pd() 或down() | 無 | 落下畫筆,之後移動畫筆繪製。 |
penup() | pu()或up() | 無 | 擡起畫筆,之後移動畫筆不繪製。 |
pensize(width) | width(width) | width:設定的畫筆線條寬度,如果為None或者為空,則返回當前畫筆寬度 | 設定畫筆寬度,當無引數輸入時返回當前畫筆寬度。 |
顏色控制函數:color()、pencolor()、begin_fill()、end_fill();
函數名 | 別名 | 引數說明 | 功能/作用 |
color(colorstring) 或 color((r,g,b)) 或 color(r,g,b) 或 color(colorstr1,colorstr2)或 color((r1,g1,b1),(r2,g2,b2)) |
| 當畫筆和填充顏色相同時使用1個引數; 當畫筆和填充顏色不同時使用2個引數。
colorstring:表示顏色的字串,例如:“Purple","red","blue"等。還支援十六進位制顏色值,如:"#6666CC"等 (r,g,b):顏色對應RGB的值,如綠色用rgb(0, 128, 0)。【注】 | 返回設定畫筆或填充顏色,當無引數輸入時返回當前畫筆及填充顏色。 |
pencolor(colorstring) 或 pencolor((r,g,b)) 或 pencolor(r,g,b) |
| colorstring:表示顏色的字串,例如:“Purple","red","blue"等。還支援十六進位制顏色值,如:"#6666CC"等
(r,g,b):顏色對應的RGB的值,如綠色用rgb(0, 128, 0)。【注】 | 返回或設定畫筆顏色,當無引數輸入時返回當前畫筆顏色。 |
begin_fill() |
| 無 | 在繪製帶有填充色彩圖形之前呼叫,表示填充開始。 |
,end_fill() |
| 無 | 在繪製帶有填充色彩圖形之後呼叫,表示填充結束。 |
fillcolor(colorstring) 或 fillcolor((r,g,b)) 或 fillcolor(r,g,b) | colorstring:表示顏色的字串,例如:“Purple","red","blue"等。還支援十六進位制顏色值,如:"#6666CC"等 (r,g,b):顏色對應的RGB的值,如綠色用rgb(0, 128, 0)。【注】 | 填充色彩 | |
【注】
turtle模組(庫)中用字串表示顏色,如
"red"表示紅色
"black"表示黑色
"blue"表示藍色
"orange"表示橘黃色
"green"表示綠色
"gold"表示金色
"yellow"表示紅色
"pink"表示粉色
還支援十六進位制顏色值,如:"#6666CC"、"#FF0000"、"#CCFFFF"等。
turtle模組(庫)中用RGB三原色表示顏色
關於RGB三原色表示顏色簡介
當R值取滿為255,G與B都取0時表示紅色,當G值取滿為255,R與B都取0時表示綠色,當B值取滿為255,R與G都取0時表示藍色,其他情況所得顏色即為紅(R)、綠(G)、藍(B)三個顏色通道的疊加顏色。常見疊加顏色如下表
顏色名稱 | 紅色值 Red | 綠色值 Green | 藍色值 Blue |
黑色 | 0 | 0 | 0 |
藍色 | 0 | 0 | 255 |
綠色 | 0 | 255 | 0 |
青色 | 0 | 255 | 255 |
紅色 | 255 | 0 | 0 |
洋紅色(亮紫色) | 255 | 0 | 255 |
黃色 | 255 | 255 | 0 |
白色 | 255 | 255 | 255 |
用R、G、B對應的三元組來表示顏色。例如:(255,0,0)表示紅色,(0,255,0)表示綠色。
運動控制函數:forward()、backward()、right()、left()、setheading()、goto()、circle()
函數名 | 別名 | 引數說明 | 功能/作用 |
forward(distance) | fd(distance) | distance:行進距離的畫素值。當值為負數時,表示向相反方向前進。 | 向畫筆當前行進方向前進distance距離。 |
backward(distance) 或 back(distance) | bk(distance) | distance:行進距離的畫素值。當值為負值時,表示向前進方向行進。backward()函數不改變畫筆的運動方向,相當於後退著行進。 | 向當前畫筆前進方向的反方向行進distance距離。 |
right(angle) | rt(angle) | angle:角度整數值。 | 以當前行進角度為原點,行進方向向右改變相對角度值angle |
left(angle) | lt(angle) | angle:角度的整數值。 | 以當前行進角度為原點,行進方向向左改變相對角度值angle。 |
setheading(to_angle) | seth(to_angle) | to_angle:角度的整數值。 | 作用:設定畫筆當前行進方向的角度為to_angle,該角度為絕對方向角度值。 |
goto(x,y) |
| x,y:x為標系的絕對橫座標值,y為置為座標系的絕對縱座標值。 | 將畫筆移動到絕對位置(x,y)處。 |
circle(radius[,extent=None]) [還有一個引數,在此未講] |
| radius:弧形半徑,當值為正數時,半徑在畫筆左側。當值為負數時,半徑在畫筆右側。 extent:繪製弧形角度。當不給該引數或該引數為None時,繪製整個圓形。當extent的值為正數時,順當前方向繪製弧形;當extent的值為負數時,逆當前方向繪製弧形。 | 根據半徑radius繪製extent角度的弧形。
|
【angle即角度,也可以為負數。distance即距離,也可以為負數】
除此之外,再簡要介紹一些函數如下
畫筆控制函數
函數名 | 說明 |
turtle.shape(name) | name指定烏龜狀:“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”。預設"classic" 如turtle.shape('turtle') |
turtle.hideturtle() | 隱藏畫筆的turtle形狀 |
turtle.showturtle() | 顯示畫筆的turtle形狀 |
全域性控制函數
函數名 | 說明 |
turtle.clear() | 清空turtle視窗,但是turtle的位置和狀態不會改變 |
turtle.reset() | 清空視窗,重置turtle狀態為起始狀態 |
turtle.undo() | 復原上一個turtle動作 |
turtle.isvisible() | 返回當前turtle是否可見 |
stamp() | 複製當前圖形 |
turtle.write(s [,font=("font-name",font_size,"font_type")]) | 寫文字,s為文字內容,font是字型的引數,分別為字型名稱,大小和型別;font為可選項,font引數也是可選項。字型名稱:"Arial"、"宋體"、"楷體"等 |
import turtle turtle.penup() #擡起畫筆 turtle.goto(-200,100) #移動位置 turtle.write("好好學習,天天向上",font=("楷體",36))
其它函數
函數名 | 說明 | |||||||||
turtle.mainloop() 或 turtle.done() | 啟動事件迴圈 -呼叫Tkinter的mainloop函數。 必須是烏龜圖形程式中的最後一個語句。 | |||||||||
turtle.mode(mode=None) | 設定烏龜模式(“standard”,“logo”或“world”)並執行重置。如果沒有給出模式,則返回當前模式。
| |||||||||
turtle.delay(delay=None) | 設定或返回以毫秒為單位的繪圖延遲。 | |||||||||
turtle.begin_poly() | 開始記錄多邊形的頂點。當前的烏龜位置是多邊形的第一個頂點。 | |||||||||
turtle.end_poly() | 停止記錄多邊形的頂點。當前的烏龜位置是多邊形的最後一個頂點。將與第一個頂點相連。 | |||||||||
turtle.get_poly() | 返回最後記錄的多邊形。 |
第一步:讓Python引入turtle模組,引入模組就是告訴Python你想要用它。
import turtle
第二步:建立畫布,若使用預設可跳過此步。
第三步:理順思路,選取函數繪圖實現意圖,這是最重要的一步,可能需要多次試驗。
下面給出幾個例子
例1、繪製梯形
此梯形繪製在第四象限,所以梯形形每個頂點的座標中,x座標為正,y座標為負。四個點的座標分別選擇為D(100,-100)、E(200,-100)、F(250,-200)、G(50,-200)。可見所繪製的直角三角形DE=100,GF=200。由於D點的y座標與E點的y座標相等,所以,DE平行於x軸,由於G點的y座標與F點的y座標相等,所以,GF也平行於x軸。程式碼為:
import turtle turtle.up() turtle.fillcolor('yellow') turtle.begin_fill() turtle.goto(100,-100) turtle.down() turtle.goto(200,-100) turtle.goto(250,-200) turtle.goto(50,-200) turtle.goto(100,-100) turtle.end_fill()
思考一下,如何將梯形繪製在正中間?
例2、使用circle()函數的例子
import turtle turtle.pencolor("red") turtle.circle(50) #整圓 turtle.pencolor("blue") turtle.circle(120, 180) #半圓 turtle.pencolor("green") turtle.circle(80,steps=3) #三角形
例3、畫五角星
import turtle turtle.pensize(5) turtle.pencolor("yellow") turtle.fillcolor("red") turtle.begin_fill() for i in range(5): turtle.forward(200) turtle.right(144) turtle.end_fill() turtle.hideturtle()
到此這篇關於Python中turtle繪圖模組的文章就介紹到這了,更多相關Python中turtle繪圖模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45