Python——我所學習的turtle函數庫


1基礎概念

1.1 畫布(canvas)

畫布就是turtle為我們展開用於繪圖區域, 我們可以設置它的大小和初始位置。

常用的畫布方法有兩個:screensize()和setup()。

(1)turtle.screensize(canvwidth=None, canvheight=None, bg=None)

參數分別為畫布的寬(單位像素), 高, 背景顏色

如:

turtle.screensize(800, 600, "green")

turtle.screensize() #返回默認大小(400, 300)

(2)turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

參數:

  • width, height: 輸入寬和高為整數時, 表示像素; 為小數時, 表示占據電腦屏幕的比例
  • (startx, starty): 這一坐標表示 矩形窗口左上角頂點的位置, 如果為空,則窗口位於屏幕中心

如:

turtle.setup(width=0.6, height=0.6)

turtle.setup(width=800, height=800, startx=100, starty=100)

1.2 畫筆

在畫布上,默認有一個坐標原點為畫布中心的坐標軸, 坐標原點上有一只面朝x軸正方向小烏龜。

這里我們描述小烏龜時使用了兩個詞語:標原點(位置),面朝x軸正方向(方向),turtle繪圖中, 就是使用位置方向描述小烏龜(畫筆)的狀態

(1)畫筆的屬性

畫筆有顏色、畫線的寬度等屬性。

1)  turtle.pensize() :設置畫筆的寬度;

2)  turtle.pencolor() :沒有參數傳入返回當前畫筆顏色;傳入參數設置畫筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組。

    >>> pencolor('brown')

    >>> tup = (0.2, 0.8, 0.55)

    >>> pencolor(tup)

    >>> pencolor()

    '#33cc8c'

3)  turtle.speed(speed) :設置畫筆移動速度,畫筆繪制的速度范圍[0,10]整數, 數字越大越快

(2)繪圖命令

操縱海龜繪圖有着許多的命令,這些命令可以划分為3種:運動命令,畫筆控制命令和全局控制命令

畫筆運動命令:

命令

說明

turtle.forward(distance)

向當前畫筆方向移動distance像素長

turtle.backward(distance)

向當前畫筆相反方向移動distance像素長度

turtle.right(degree)

順時針移動degree°

turtle.left(degree)

逆時針移動degree°

turtle.pendown()

移動時繪制圖形,缺省時也為繪制

turtle.goto(x,y)

將畫筆移動到坐標為x,y的位置

turtle.penup()

移動時不繪制圖形,提起筆,用於另起一個地方繪制時用

turtle.speed(speed)

畫筆繪制的速度范圍[0,10]整數

turtle.circle()

畫圓,半徑為正(),表示圓心在畫筆的左邊(右邊)畫圓

畫筆控制命令:

命令

說明

turtle.pensize(width)

繪制圖形時的寬度

turtle.pencolor()

畫筆顏色

turtle.fillcolor(colorstring)

繪制圖形的填充顏色

turtle.color(color1, color2)

同時設置pencolor=color1, fillcolor=color2

turtle.filling()

返回當前是否在填充狀態

turtle.begin_fill()

准備開始填充圖形

turtle.end_fill()

填充完成;

turtle.hideturtle()

隱藏箭頭顯示;

turtle.showturtle()

hideturtle()函數對應

全局控制命令

命令

說明

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的參數也是可選項

 

2、繪圖展示

2.1猴子的頭(未完成)

 

 

代碼如下:

import turtle

turtle.screensize(800, 600, "green")

turtle.pencolor("brown")

turtle.pensize(5)

turtle.fillcolor("brown")

 

turtle.begin_fill()

 

turtle.circle(90)

turtle.circle(90,105)

turtle.right(90)

turtle.circle(40,-360)

turtle.end_fill()

turtle.left(90)

turtle.begin_fill()

turtle.circle(90,145)

turtle.right(90)

turtle.left(10)

turtle.circle(40,-360)

 

turtle.right(150)

turtle.forward(75)

turtle.right(90)

turtle.forward(50)

turtle.right(90)

turtle.forward(10)

turtle.end_fill()

 

turtle.fillcolor("red")

turtle.begin_fill()

turtle.pencolor("black")

turtle.penup

turtle.left(180)

turtle.pencolor("red")

turtle.forward(20)

turtle.right(180)

turtle.pencolor("black")

turtle.forward(10)

turtle.pendown

turtle.circle(10)

turtle.end_fill()

 

turtle.right(-90)

turtle.forward(50)

turtle.circle(20,105)

turtle.left(40)

turtle.circle(20,55)

 

turtle.circle(20,-55)

turtle.right(40)

turtle.circle(20,-105)

turtle.circle(-20,105)

turtle.right(40)

turtle.circle(-20,55)

turtle.pencolor("brown")

turtle.forward(40)

turtle.right(-20)

turtle.forward(20)

turtle.left(90)

turtle.forward(20)

 

turtle.pencolor("black")

turtle.fillcolor("white")

turtle.begin_fill()

turtle.circle(-20)

turtle.end_fill()

 

 

turtle.fillcolor("black")

turtle.begin_fill()

turtle.circle(-15)

turtle.end_fill()

turtle.right(180)

turtle.pencolor("brown")

turtle.forward(80)

 

turtle.pencolor("black")

turtle.fillcolor("white")

turtle.begin_fill()

turtle.circle(20)

turtle.end_fill()

 

 

turtle.fillcolor("black")

turtle.begin_fill()

turtle.circle(15)

turtle.end_fill()

(以后會將這個猴子完善,探索中)

 

 

2.2太陽花

 

 

代碼如下:

from turtle import *

color('red','yellow')

begin_fill()

while True:

    forward(200)

    left(170)

    if abs(pos()) <1:

        break

end_fill()

done()

 

2.3五角星

 

 

代碼如下:

import turtle

 

turtle.pensize(10)

turtle.pencolor("red")

turtle.fillcolor("yellow")

 

turtle.begin_fill()

for i in range(5):

    turtle.forward(120)

    turtle.right(144)

    turtle.forward(120)

    turtle.left(72)

turtle.end_fill()

 

turtle.hideturtle()

turtle.done()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM