吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2166|回复: 14
收起左侧

[Python 原创] 用Python的初学turtle实现时钟

  [复制链接]
Helli 发表于 2022-12-26 13:46
本帖最后由 Helli 于 2022-12-26 21:14 编辑

这用了海龟库,比较简单,初学写的
代码:
[Python] 纯文本查看 复制代码
from turtle import *  ## 导入turtle库
from datetime import *  ## 导入时间库

def Skip(step):
    penup()
    forward(step)
    pendown()

## 定义Turtle形状,建立指针Turtle
def mkHand(name, length): 
    reset()
    Skip(-length*0.1)
    begin_poly()
    forward(length*1.1)
    end_poly()
    handForm = get_poly()
    register_shape(name, handForm) ## 定义3个指针的对象

def Init():
    global secHand, minHand, hurHand, printer
    mode("logo") ## 初始Turtle指向北
    
    ## 建立三个表针Turtle并初始化
    mkHand("secHand", 125)
    mkHand("minHand",  130)
    mkHand("hurHand", 90)
    secHand = Turtle()
    ## Turtle是turtle模块中的类,可将三个指针实例化
    
    secHand.shape("secHand")
    ## 定义秒针对象。shape是Turtle类中的方法
    
    minHand = Turtle()
    minHand.shape("minHand")
    ## 定义分针对象
    
    hurHand = Turtle()
    hurHand.shape("hurHand")
    ## 定义时针对象
    
    for hand in secHand, minHand, hurHand:
        hand.shapesize(1, 1, 3)
        hand.speed(0)
        ## 速度设置
    
    ## 定义输出文字Turtle
    printer = Turtle()
    ##实例化,并输出文字为类的一个对象
    
    printer.hideturtle()
    printer.penup()

def SetupClock(radius):  ##定义表的外框
    reset()
    pensize(7)
    for i in range(60):
        Skip(radius)
        if i % 5 == 0:
            forward(20)
            Skip(-radius-20)
        else:
            dot(5)
            Skip(-radius)
        right(6)

def Week(t):    
    week = ["Monday", "Tuesday", "Wednesday",
            "Thursday", "Friday", "Saturday", "Sunday"]
    return week[t.weekday()]

def Date(t):
    y = t.year
    m = t.month
    d = t.day
    return "%s %d %d" % (y, m, d)

def Tick(): ## 定义指针的动态显示    
    t = datetime.today()
    second = t.second + t.microsecond*0.000001
    minute = t.minute + second/60.0
    hour = t.hour + minute/60.0
    secHand.setheading(6*second)
    ## 指针对象中的setheading方法接受参数,设定朝向的角度
    minHand.setheading(6*minute)
    hurHand.setheading(30*hour)

    tracer(False)  
    printer.forward(65)
    printer.write(Week(t), align="center",
                  font=("Courier", 16, "bold"))
    printer.back(130)
    printer.write(Date(t), align="center",
                  font=("Courier", 16, "bold"))
    printer.home()
    tracer(True)

    ontimer(Tick, 100) 
    ##设置为100毫秒后继续调用tick函数

def main():
    tracer(False)
    Init()
    SetupClock(160)
    tracer(True)
    Tick()
    mainloop()

## 文件作为脚本直接执行才会被执行,
## 而import到其他脚本中是不会被执行的声明
if __name__ == "__main__":       
    main()

都是内置库,可直接运行

免费评分

参与人数 8吾爱币 +10 热心值 +6 收起 理由
Ryan_XQ + 1 + 1 用心讨论,共获提升!
ccc2 + 1 谢谢@Thanks!
zhaoqingdz + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Mark2022 + 1 谢谢@Thanks!
lin2lin3lin5 + 1 + 1 我很赞同!
jukongka + 1 + 1 我很赞同!
glz220 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

greatjen 发表于 2023-1-5 18:29
Python之路漫长而遥远
lengkeyu 发表于 2022-12-26 14:40
weixiao222 发表于 2022-12-26 14:52
jukongka 发表于 2022-12-26 16:43
刚学了turtle画五环,再跟楼主学个画时钟
阿鹏大大 发表于 2022-12-26 18:53
感谢楼主分享,考操作题正好用上了。
SuperMingZhi 发表于 2022-12-26 18:55
学习了 谢谢
lin2lin3lin5 发表于 2022-12-26 20:34
学习一下
 楼主| Helli 发表于 2022-12-26 21:14
阿鹏大大 发表于 2022-12-26 18:53
感谢楼主分享,考操作题正好用上了。

真幸运,操作题
Mark2022 发表于 2022-12-27 17:24
正在学习,谢谢分享
hsdlh2010 发表于 2022-12-27 18:13
很好有用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 08:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表