正方向的钟(Python模块)

 在电脑终端执行引入一个‘乌龟画图’模块,然后就可以大胆的想象你想要画的出来的图形咯。

这里有一个钟表的代码示例:

#!/usr/bin/env python3
# -*- coding: cp1252 -*-
"""       turtle-example-suite:

             tdemo_clock.py

Enhanced clock-program, showing date
and time
  ------------------------------------
   Press STOP to exit the program!
  ------------------------------------
"""
from turtle import *
from datetime import datetime

def jump(distanz, winkel=0):
    penup()
    right(winkel)
    forward(distanz)
    left(winkel)
    pendown()

def hand(laenge, spitze):
    fd(laenge*1.15)
    rt(90)
    fd(spitze/2.0)
    lt(120)
    fd(spitze)
    lt(120)
    fd(spitze)
    lt(120)
    fd(spitze/2.0)

def make_hand_shape(name, laenge, spitze):
    reset()
    jump(-laenge*0.15)
    begin_poly()
    hand(laenge, spitze)
    end_poly()
    hand_form = get_poly()
    register_shape(name, hand_form)

def clockface(radius):
    reset()
    pensize(7)
    for i in range(60):
        jump(radius)
        if i % 5 == 0:
            fd(25)
            jump(-radius-25)
        else:
            dot(3)
            jump(-radius)
        rt(6)

def setup():
    global second_hand, minute_hand, hour_hand, writer
    mode("logo")
    make_hand_shape("second_hand", 125, 25)
    make_hand_shape("minute_hand",  130, 25)
    make_hand_shape("hour_hand", 90, 25)
    clockface(160)
    second_hand = Turtle()
    second_hand.shape("second_hand")
    second_hand.color("gray20", "gray80")
    minute_hand = Turtle()
    minute_hand.shape("minute_hand")
    minute_hand.color("blue1", "red1")
    hour_hand = Turtle()
    hour_hand.shape("hour_hand")
    hour_hand.color("blue3", "red3")
    for hand in second_hand, minute_hand, hour_hand:
        hand.resizemode("user")
        hand.shapesize(1, 1, 3)
        hand.speed(0)
    ht()
    writer = Turtle()
    #writer.mode("logo")
    writer.ht()
    writer.pu()
    writer.bk(85)

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

def datum(z):
    monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June",
             "July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]
    j = z.year
    m = monat[z.month - 1]
    t = z.day
    return "%s %d %d" % (m, t, j)

def tick():
    t = datetime.today()
    sekunde = t.second + t.microsecond*0.000001
    minute = t.minute + sekunde/60.0
    stunde = t.hour + minute/60.0
    try:
        tracer(False)  # Terminator can occur here
        writer.clear()
        writer.home()
        writer.forward(65)
        writer.write(wochentag(t),
                     align="center", font=("Courier", 14, "bold"))
        writer.back(150)
        writer.write(datum(t),
                     align="center", font=("Courier", 14, "bold"))
        writer.forward(85)
        second_hand.setheading(6*sekunde)  # or here
        minute_hand.setheading(6*minute)
        hour_hand.setheading(30*stunde)
        tracer(True)
        ontimer(tick, 100)
    except Terminator:
        pass  # turtledemo user pressed STOP

def main():
    tracer(False)
    setup()
    tracer(True)
    tick()
    return "EVENTLOOP"

if __name__ == "__main__":
    mode("logo")
    msg = main()
    print(msg)
    mainloop()

还有更多等待你的探索,芜湖—— 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python中的turtle模块来绘制时。具体步骤如下: 1. 导入turtle模块 2. 创建一个画布,并设置画布的大小和背景颜色 3. 创建一个turtle对象,并设置画笔的颜色和粗细 4. 绘制时的外框,可以使用turtle的circle()函数来绘制圆形 5. 绘制时的刻度,可以使用turtle的penup()和pendown()函数来控制画笔的移动,然后使用forward()函数来绘制线条 6. 绘制时的指针,可以使用turtle的setheading()函数来设置指针的方向,然后使用forward()函数来绘制指针 7. 最后,使用turtle的done()函数来保持窗口的显示,直到用户关闭窗口为止。 示例代码如下: ```python import turtle import time # 设置画布大小和背景颜色 turtle.setup(600, 600) turtle.bgcolor("white") # 创建一个turtle对象,并设置画笔的颜色和粗细 pen = turtle.Turtle() pen.color("black") pen.pensize(3) # 绘制时的外框 pen.penup() pen.goto(, -200) pen.pendown() pen.circle(200) # 绘制时的刻度 for i in range(12): pen.penup() pen.goto(, ) pen.setheading(30 * i - 90) pen.forward(170) pen.pendown() pen.forward(20) # 绘制时的指针 while True: t = time.localtime() hour = t.tm_hour % 12 minute = t.tm_min second = t.tm_sec pen.penup() pen.goto(, ) pen.setheading(30 * hour + minute / 2 - 90) pen.pendown() pen.forward(80) pen.penup() pen.goto(, ) pen.setheading(6 * minute - 90) pen.pendown() pen.forward(120) pen.penup() pen.goto(, ) pen.setheading(6 * second - 90) pen.pendown() pen.forward(150) time.sleep(1) pen.clear() turtle.done() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值