Python Turtle模塊的簡單應用


時鍾

import turtle as t
import datetime as dt

#畫出背景
game = t.Screen()
game.bgcolor("white")
game.setup(600,600)
game.tracer(0)

#定義畫筆屬性
pen = t.Turtle()
pen.speed(10)
pen.ht()
pen.up()

def draw_clock(h,m,s):
    #畫圈
    pen.clear()
    pen.up()
    pen.color("black")
    pen.pensize(3)
    pen.seth(0)
    pen.goto(0,-210)
    pen.down()
    pen.circle(210)

    #畫刻度
    pen.up()
    pen.goto(0,0)
    pen.seth(90)

    #大刻度
    for _ in range(12):
        pen.fd(190)
        pen.down()
        pen.fd(20)
        pen.up()
        pen.goto(0,0)
        pen.rt(30)

    #小刻度
    for _ in range(60):
        pen.up()
        pen.goto(0,0)
        pen.rt(6)
        pen.fd(200)
        pen.down()
        pen.color('black')
        pen.pensize(2)
        pen.fd(10)

    #畫秒針
    pen.up()
    pen.home()
    pen.down()
    pen.color("red")
    pen.pensize(3)
    pen.seth(90)
    pen.rt(s/60*360)
    pen.fd(160)
    pen.stamp()

    #畫分針
    pen.up()
    pen.home()
    pen.down()
    pen.color("Gold")
    pen.pensize(3)
    pen.seth(90)
    pen.rt(m/60*360)
    pen.fd(120)
    pen.stamp()   

    #畫時針
    pen.up()
    pen.home()
    pen.down()
    pen.color("Maroon")
    pen.pensize(3)
    pen.seth(90)
    pen.rt(h/12*360)
    pen.fd(80)
    pen.stamp()

    #問候字體
    pen.up()
    pen.goto(-175,250)
    pen.color('orange')
    font1 = ('宋體',20,'bold')
    hello = "{}年你好!今天是{}月{}日".format(now.year,now.month,now.day)
    pen.write(hello,"center",font=font1)

while True:
    game.update()
    now = dt.datetime.now()
    draw_clock(now.hour,now.minute,now.second)

game.mainloop()

 

 太極圖

import turtle 


def Taichi(R,r):
    '''
    R:整個大圓半徑;
    r:兩個最小圓半徑    
    '''
    #大圓左白右黑
    p.up()
    p.goto(0,-R)
    p.down()
    p.pencolor('black')
    p.fillcolor('black')
    p.begin_fill()
    p.circle(R,180)
    p.end_fill()
    p.pencolor('white')
    p.fillcolor('white')
    p.begin_fill()
    p.circle(R,180)
    p.end_fill()

    #半圓下黑上白
    p.pencolor('black')
    p.fillcolor('black')
    p.begin_fill()
    p.circle(R/2,-180)
    p.end_fill()
    p.right(180)
    p.pencolor('white')
    p.fillcolor('white')
    p.begin_fill()
    p.circle(R/2,180)
    p.end_fill()

    #小圓上黑下白
    p.up()
    p.home()
    p.goto(0,R/2-r)
    p.down()
    p.pencolor('black')
    p.fillcolor('black')
    p.begin_fill()
    p.circle(r)
    p.end_fill()

    p.up()
    p.goto(0,-(R/2+r))
    p.down()
    p.pencolor('white')
    p.fillcolor('white')
    p.begin_fill()
    p.circle(r)
    p.end_fill()

if __name__ == '__main__':
    s = turtle.Screen()
    s.bgcolor('Silver')
    s.screensize(800,800)
    p = turtle.Turtle()
    p.shape('turtle')
    p.ht()
    s.tracer(10,0)

    Taichi(200,30)
    s.mainloop()

 

 玫瑰

大部分都是通過調整圓半徑、弧度和方向繪制的,過程需一步步嘗試,比較繁瑣,僅供參考

import turtle

#漸大
def increases(a,z,f):
    #a:畫筆起始大小;z:畫筆終止大小;f:漸變拉伸距離
    for i in range(a,z):
        p.pensize(i)
        p.forward(f)

#漸小
def smaller(a,z,f):
    for i in range(a,z,-1):
        p.pensize(i)
        p.forward(f)

#花蕊
def flower():
    #右下
    p.up()
    p.home()
    p.goto(0,0)
    p.pencolor('red')
    p.left(15)
    p.down()
    increases(1,7,5)
    p.circle(50,70)
    p.forward(60)
    p.circle(-100,15)
    smaller(7,1,5)
    #左下
    p.up()
    p.home()
    p.goto(-20,0)
    p.left(180)
    p.down()
    increases(1,7,5)
    p.circle(-60,85)
    p.forward(60)
    p.circle(100,15)
    smaller(7,1,5)
    #右邊
    p.up()
    p.home()
    p.goto(80,250)
    p.left(10)
    p.down()
    increases(1,5,5)
    p.circle(-20,120)
    p.circle(-130,20)
    p.forward(50)
    p.circle(100,15)
    smaller(5,1,6)
    #左邊
    p.up()
    p.home()
    p.goto(-110,240)
    p.left(180)
    p.down()
    increases(1,5,5)
    p.circle(30,130)
    p.circle(130,15)
    p.forward(20)
    p.circle(-100,35)
    smaller(5,1,7)
    #左上
    p.up()
    p.home()
    p.goto(0,270)
    p.left(150)
    p.down()
    increases(1,5,5)
    p.circle(60,120)
    p.circle(60,30)
    p.circle(-50,25)
    smaller(5,1,5)
    #右上
    p.up()
    p.home()
    p.goto(8,271)
    p.left(10)
    p.down()
    increases(1,5,5)
    p.circle(-40,80)
    p.circle(-30,90)
    p.forward(5)
    p.circle(250,25)
    smaller(4,1,6)
    #右中
    p.up()
    p.home()
    p.goto(65,215)
    p.left(-95)
    p.down()
    increases(1,5,5)
    p.circle(200,6)
    smaller(5,1,7)
    #頂右1
    p.up()
    p.home()
    p.goto(-10,260)
    p.left(10)
    p.down()
    increases(1,5,5)
    p.circle(-25,120)
    p.circle(-20,40)
    p.forward(15)
    smaller(4,1,6)
    #頂右2
    p.up()
    p.home()
    p.goto(-20,240)
    p.left(10)
    p.down()
    increases(1,5,5)
    p.circle(-10,200)
    smaller(4,1,6)
    #頂左1
    p.up()
    p.home()
    p.goto(-20,255)
    p.left(165)
    p.down()
    increases(1,5,5)
    p.forward(10)
    p.circle(35,190)
    p.circle(90,25)
    smaller(4,1,5)
    #頂左2
    p.up()
    p.home()
    p.goto(-25,240)
    p.left(170)
    p.down()
    increases(1,5,5)
    p.circle(15,230)
    smaller(4,1,6)

def leaf():
    #葉子
    #左1
    p.pencolor('Green')
    p.up()
    p.home()
    p.goto(-80,0)
    p.left(220)
    p.down()
    increases(1,5,5)
    p.circle(80,50)
    p.circle(-80,60)
    smaller(4,1,5)
    #左2
    p.right(210)
    increases(1,5,5)
    p.circle(70,80)
    p.circle(-100,40)
    smaller(4,1,5)
    #左3
    p.right(100)
    increases(1,5,5)
    p.circle(-200,40)
    smaller(4,1,5)
    #左4
    p.left(155)
    increases(1,5,5)
    p.circle(200,45)
    smaller(4,1,5)
    #右1
    p.up()
    p.home()
    p.goto(45,8)
    p.right(45)
    p.down()
    increases(1,5,5)
    p.circle(-300,20)
    p.circle(100,40)
    smaller(4,1,5)
    #右2
    p.left(200)
    increases(1,5,5)
    p.circle(-100,60)
    p.circle(70,20)
    smaller(5,1,7)
    #小葉
    p.up()
    p.home()
    p.goto(70,30)
    p.left(20)
    p.down()
    increases(1,5,5)
    p.circle(50,30)
    smaller(4,1,5)
    p.right(150)
    increases(1,5,5)
    p.circle(-50,70)
    smaller(4,1,5)

    #花柄
    p.up()
    p.home()
    p.goto(-30,-60)
    p.down()
    p.right(80)
    increases(1,5,5)
    p.circle(-700,20)
    p.fd(60)
    smaller(4,1,5)

    p.up()
    p.home()
    p.goto(10,-170)
    p.down()
    p.right(90)
    increases(1,5,5)
    p.circle(-700,10)
    p.fd(55)
    smaller(4,1,5)

    #刺
    p.up()
    p.home()
    p.goto(-25,-250)
    p.down()
    p.left(125)
    increases(1,5,5)
    p.fd(10)
    smaller(5,1,5)

    p.left(165)
    increases(1,5,5)
    p.fd(40)
    smaller(5,1,5)


#畫布設置
s = turtle.Screen()
s.bgcolor('LightYellow')
s.setup(1400,800)
s.title('送你花花')
s.tracer(1,10)

#畫筆設置
p = turtle.Turtle()
p.shape('turtle')
p.speed('fastest')
p.ht()

#畫花和葉 flower() leaf() s.mainloop()


免責聲明!

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



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