zoukankan      html  css  js  c++  java
  • python编写时钟代码

    # !/urs/bin/ python
    # _*_ coding: utf-8
    # !/usr/bin/env python
    # -*- coding:utf-8 -*-
    import turtle
    import datetime
    
    
    # 移动一段距离
    def skip(distance):
        """
        移动乌龟一段距离,不留痕迹
        :param distance: 像素
        :return:
        """
        turtle.penup()
        turtle.forward(distance)
        turtle.pendown()
    
    
    def draw_clock():
        # 先画表盘
        # 先画点
        # 移动一段距离,画一个点,然后退回
        # 转动6°,再移动一段距离,画一个点,然后退回
        # 循环 60次
        # 让乌龟的方向默认向上
        turtle.reset()
        turtle.hideturtle()
        for i in range(60):
    
            skip(160)
            # 根据 5格一个时钟
            if i % 5 == 0:
                turtle.pensize(7)
                # 画时钟
                turtle.forward(20)
                if i == 0:
                    turtle.write(12, align='center', font=('Courier', 14, 'bold'))
                elif i == 25 or i == 30 or i == 35:
                    skip(25)
                    turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold'))
                    skip(-25)
    
                else:
                    turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold'))
                skip(-20)
            else:
                turtle.pensize(1)
                turtle.dot()
            skip(-160)
            turtle.right(6)
    
    
    def get_week(t):
        week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
        return week[t.weekday()]
    
    
    def create_hand(length, name):
        turtle.reset()
        skip(-length * 0.1)
        turtle.begin_poly()
        turtle.forward(length * 1.1)
        turtle.end_poly()
        # 注册
        turtle.register_shape(name, turtle.get_poly())
        hand = turtle.Turtle()
        hand.shape(name)
        hand.shapesize(1, 1, 3)
        return hand
    
    
    def run():
        # 不停的获取时间
        t = datetime.datetime.today()
        bob.forward(65)
        bob.write(get_week(t), align='center', font=('Courier', 14, 'bold'))
        bob.back(130)
        bob.write(t.strftime('%Y-%m-%d'), align='center', font=('Courier', 14, 'bold'))
        bob.home()
        # 指针移动
        second = t.second + t.microsecond * 0.000001
        minute = t.minute + second / 60
        hour = t.hour + minute / 60
        turtle.tracer(True)
        second_hand.setheading(6 * second)
        minute_hand.setheading(6 * minute)
        hour_hand.setheading(30 * hour)
        turtle.ontimer(run, 200)
    
    
    if __name__ == '__main__':
        # 画秒针,分针,时针
        turtle.mode('logo')
        turtle.hideturtle()
        global second_hand, minute_hand, hour_hand, bob
    
        second_hand = create_hand(135, 'second_hand')
        minute_hand = create_hand(125, 'minute_hand')
        hour_hand = create_hand(90, 'hour_hand')
        # 创建一个新的turtle对象,去循环的操作
        bob = turtle.Turtle()
        bob.hideturtle()
        bob.penup()
    
        turtle.tracer(False)
        draw_clock()
        run()
    
        turtle.mainloop()
    

      

  • 相关阅读:
    Mysql数学函数不求人数据库专栏,MySQL
    下班以后就不要开电脑了,
    在ubuntu下用eclipsecdt调试memcached C language ITeye论坛
    mperham/sidekiq
    Reference C++ Reference
    请问一下哪有机械键盘的实体店可以体验一下? 外设 Chiphell 分享与交流用户体验的最佳平台 Powered by Discuz!
    Linux的cron和crontab iTech 博客园
    MIUI官方论坛 发烧友必刷的Android ROM
    机器学习视频
    crossover 海客谈, 季小军, 义乌人
  • 原文地址:https://www.cnblogs.com/springcloud/p/8624040.html
Copyright © 2011-2022 走看看