1、基礎概念ide
一、畫布:畫布就是turtle爲咱們展開用於繪圖區域, 咱們能夠設置它的大小和初始位置。經常使用的畫布方法有兩個:screensize()和setup()。oop
(1)turtle.screensize(canvwidth, canvheight, bg):參數分別爲畫布的寬(單位像素), 高, 背景顏色spa
如:code
turtle.screensize(500,1000,'green')
2)turtle.setup(width, height, startx, starty):width, height:
輸入寬和高爲整數時, 表示像素; 爲小數時, 表示佔據電腦屏幕的比例。(startx, starty): 這一座標表示 矩形窗口左上角頂點的位置, 若是爲空,則窗口位於屏幕中心。
二、畫筆:在畫布上,默認有一個座標原點爲畫布中心的座標軸, 座標原點上有一隻面朝x軸正方向小烏龜。這裏咱們描述小烏龜時使用了兩個詞語:標原點
(位置),面朝x軸正方向
(方向),turtle繪圖中, 就是使用位置方向描述小烏龜(畫筆)的狀態。blog
(1)畫筆屬性:ci
1) turtle.pensize():設置畫筆的寬度;字符串
2) turtle.pencolor():沒有參數傳入,返回當前畫筆顏色,傳入參數設置畫筆顏色,能夠是字符串如"green", "red",也能夠是RGB 3元組。string
3) turtle.speed(speed):設置畫筆移動速度,畫筆繪製的速度範圍[0,10]整數,數字越大越快。it
(2)繪製命令:class
1)turtle.forward(distance)(別名:turtle.fd):向當前畫筆方向移動distance像素長度。
2)turtle.backward(distance):向當前畫筆相反方向移動distance像素長度。
3)turtle.right(degree):順時針移動degree°。
4)turtle.left(degree):逆時針移動degree°。
5)turtle.pendown()(別名:turtle.pd(),turtle.down()):移動時繪製圖形,缺省時也爲繪製。
6)turtle.goto(x,y):將畫筆移動到座標爲x,y的位置。
7)turtle.penup()(別名:turtle.pu(),turtle.up()):提起筆移動,不繪製圖形,用於另起一個地方繪製。
8)turtle.circle():畫圓,半徑爲正(負),表示圓心在畫筆的左邊(右邊)畫圓。
9)setx( ):將當前x軸移動到指定位置。
10)sety( ):將當前y軸移動到指定位置。
11)setheading(angle):設置當前朝向爲angle角度。
12)home():設置當前畫筆位置爲原點,朝向東。
13)dot(r):繪製一個指定直徑和顏色的圓點。
14)turtle.fillcolor(colorstring):繪製圖形的填充顏色。
15)turtle.color(color1, color2):同時設置pencolor=color1, fillcolor=color2。
16)turtle.filling():返回當前是否在填充狀態。
17)turtle.begin_fill():準備開始填充圖形。
18)turtle.end_fill():填充完成。
19)turtle.hideturtle():隱藏畫筆的turtle形狀。
20)turtle.showturtle():顯示畫筆的turtle形狀。
21)turtle.seth(to_angle)(別名:turtle.setheading(to_angle)):設置小海龜當前前進方向爲to_angle,該角度是絕對方向的角度值。
2、Python繪圖實例
i)蟒蛇
import turtle turtle.setup(650,350,200,200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.pencolor("pink") turtle.seth(-40) for i in range(4): turtle.circle(40,80) turtle.circle(-40,80) turtle.circle(40,80/2) turtle.fd(40) turtle.circle(16,180) turtle.fd(40*2/3) turtle.done()
ii)玫瑰花
import turtle # 設置初始位置 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)
iii)哆啦A夢
import turtle as t t.speed(10) t.pensize(8) t.hideturtle() t.screensize(500, 500, bg='white') # 貓臉 t.fillcolor('#00A1E8') t.begin_fill() t.circle(120) t.end_fill() t.pensize(3) t.fillcolor('white') t.begin_fill() t.circle(100) t.end_fill() t.pu() t.home() t.goto(0, 134) t.pd() t.pensize(4) t.fillcolor("#EA0014") t.begin_fill() t.circle(18) t.end_fill() t.pu() t.goto(7, 155) t.pensize(2) t.color('white', 'white') t.pd() t.begin_fill() t.circle(4) t.end_fill() t.pu() t.goto(-30, 160) t.pensize(4) t.pd() t.color('black', 'white') t.begin_fill() a = 0.4 for i in range(120): if 0 <= i < 30 or 60 <= i < 90: a = a+0.08 t.lt(3) #向左轉3度 t.fd(a) #向前走a的步長 else: a = a-0.08 t.lt(3) t.fd(a) t.end_fill() t.pu() t.goto(30, 160) t.pensize(4) t.pd() t.color('black', 'white') t.begin_fill() for i in range(120): if 0 <= i < 30 or 60 <= i < 90: a = a+0.08 t.lt(3) # 向左轉3度 t.fd(a) # 向前走a的步長 else: a = a-0.08 t.lt(3) t.fd(a) t.end_fill() t.pu() t.goto(-38,190) t.pensize(8) t.pd() t.right(-30) t.forward(15) t.right(70) t.forward(15) t.pu() t.goto(15, 185) t.pensize(4) t.pd() t.color('black', 'black') t.begin_fill() t.circle(13) t.end_fill() t.pu() t.goto(13, 190) t.pensize(2) t.pd() t.color('white', 'white') t.begin_fill() t.circle(5) t.end_fill() t.pu() t.home() t.goto(0, 134) t.pensize(4) t.pencolor('black') t.pd() t.right(90) t.forward(40) t.pu() t.home() t.goto(0, 124) t.pensize(3) t.pencolor('black') t.pd() t.left(10) t.forward(80) t.pu() t.home() t.goto(0, 114) t.pensize(3) t.pencolor('black') t.pd() t.left(6) t.forward(80) t.pu() t.home() t.goto(0,104) t.pensize(3) t.pencolor('black') t.pd() t.left(0) t.forward(80) # 左邊的鬍子 t.pu() t.home() t.goto(0,124) t.pensize(3) t.pencolor('black') t.pd() t.left(170) t.forward(80) t.pu() t.home() t.goto(0, 114) t.pensize(3) t.pencolor('black') t.pd() t.left(174) t.forward(80) t.pu() t.home() t.goto(0, 104) t.pensize(3) t.pencolor('black') t.pd() t.left(180) t.forward(80) t.pu() t.goto(-70, 70) t.pd() t.color('black', 'red') t.pensize(6) t.seth(-60) t.begin_fill() t.circle(80,40) t.circle(80,80) t.end_fill() t.pu() t.home() t.goto(-80,70) t.pd() t.forward(160) t.pu() t.home() t.goto(-50,50) t.pd() t.pensize(1) t.fillcolor("#eb6e1a") t.seth(40) t.begin_fill() t.circle(-40, 40) t.circle(-40, 40) t.seth(40) t.circle(-40, 40) t.circle(-40, 40) t.seth(220) t.circle(-80, 40) t.circle(-80, 40) t.end_fill() # 領帶 t.pu() t.goto(-70, 12) t.pensize(14) t.pencolor('red') t.pd() t.seth(-20) t.circle(200, 30) t.circle(200, 10) # 鈴鐺 t.pu() t.goto(0, -46) t.pd() t.pensize(3) t.color("black", '#f8d102') t.begin_fill() t.circle(25) t.end_fill() t.pu() t.goto(-5, -40) t.pd() t.pensize(2) t.color("black", '#79675d') t.begin_fill() t.circle(5) t.end_fill() t.pensize(3) t.right(115) t.forward(7) t.mainloop()