zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    常见错误及解决方案
    使用7zip压解各种文件的经常使用命令
    《鸟哥的Linux私房菜-基础学习篇(第三版)》(六)
    一起talk C栗子吧(第一百二十四回:C语言实例--内置宏)
    逻辑学和计算理论相关概念
    书评第003篇:《0day安全:软件漏洞分析技术(第2版)》
    解释器模式
    面试复习重点——数据结构、操作系统、计算机网络、数据库。
    我们凭什么年薪达到30万以上?
    测试工作中的问题清单
  • 原文地址:https://www.cnblogs.com/Archer-Xin/p/12222476.html
Copyright © 2011-2022 走看看