Turtle庫是Python語言中一個很流行的繪制影像的函式庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,它根據一組函式指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制了圖形,
1. 畫布(canvas)
畫布就是turtle為我們展開用于繪圖區域,我們可以設定它的大小和初始位置,
設定畫布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),引數分別為畫布的寬(單位像素), 高, 背景顏色,
如:turtle.screensize(800,600, "green")
turtle.screensize() #回傳默認大小(400, 300)
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)
2. 畫筆
2.1 畫筆的狀態
在畫布上,默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一只面朝x軸正方向小烏龜,這里我們描述小烏龜時使用了兩個詞語:坐標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態,
2.2 畫筆的屬性
畫筆(畫筆的屬性,顏色、畫線的寬度等)
1) turtle.pensize():設定畫筆的寬度;
2) turtle.pencolor():沒有引數傳入,回傳當前畫筆顏色,傳入引數設定畫筆顏色,可以是字串如"green", "red",也可以是RGB 3元組,
3) turtle.speed(speed):設定畫筆移動速度,畫筆繪制的速度范圍[0,10]整數,數字越大越快,
2.3 繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令,一種為畫筆控制命令,還有一種是全域控制命令,
3. 命令詳解
3.1 turtle.circle(radius, extent=None, steps=None)
描述:以給定半徑畫圓
引數:
radius(半徑):半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內切正多邊形,多邊形邊數為steps),
舉例:
circle(50) # 整圓;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圓
干貨開始:
繪制玫瑰花~
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/8/12 15:30
# @Author : vaxtiandao
# @File : flower.py
import turtle
import time
turtle.speed(5)
# 設定初始位置
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)
實作效果:

其他案例:
五角星:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/8/13 17:14
# @Author : vaxtiandao
# @File : star.py
# coding=utf-8
import turtle
import time
turtle.pensize(5)
turtle.pencolor("yellow")
turtle.fillcolor("red")
turtle.begin_fill()
for _ in range(5):
turtle.forward(200)
turtle.right(144)
turtle.end_fill()
time.sleep(2)
turtle.penup()
turtle.goto(-150, -120)
turtle.color("violet")
turtle.mainloop()
實作效果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293712.html
標籤:其他
