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()