| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 655 人关注过本帖
标题:时钟代码检查了几遍都没发现问题,但画出来的时钟是错乱的。
只看楼主 加入收藏
小白在此
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-8-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
时钟代码检查了几遍都没发现问题,但画出来的时钟是错乱的。
程序代码:
import turtle as t
from datetime import*
def Skip(step):
    t.penup()
    t.forward(step)
    t.pendown()
def mkHand(name,length):
    t.reset()
    Skip(-length*0.1)
    t.begin_poly()
    t.forward(length*1.1)
    t.end_poly()
    handFrom=t.get_poly()
    t.register_shape(name,handFrom)
def Init():
    global secHand,minHand,hurHand,printer
    t.mode('logo')
    mkHand('secHand',135)
    mkHand('minHand',125)
    mkHand('hurHand',90)
    secHand=t.Turtle()
    secHand.pencolor('green')
    secHand.shape('secHand')
    minHand=t.Turtle()
    minHand.pencolor('red')
    minHand.shape('minHand')
    hurHand=t.Turtle()
    hurHand.pencolor('blue')
    hurHand.shape('hurHand')
    for hand in secHand,minHand,hurHand:
        hand.shapesize(1,1,3)
        hand.speed(0)
    printer=t.Turtle()
    printer.hideturtle()
    printer.penup()
def SetupClock(radius):
    t.reset()
    t.pensize(7)
    for i in range(60):
        Skip(radius)
        if i%5 == 0:
            t.pencolor('red')
            t.forward(20)
            Skip(-radius-20)
            Skip(radius+20)
            if i == 0:
                t.write(int(12),align='center',font=('华文行楷',14,'bold'))
            elif i == 30:
                Skip(25)
                t.write(int(i/5),align='center',font=('华文行楷',14,'bold'))
                Skip(-25)
            elif (i == 25 or i == 35):
                Skip(20)
                t.write(int(i/5),align='center',font=('华文行楷',14,'bold'))
                Skip(-20)
            else:
                t.write(int(i/5),align='center',font=('华文行楷',14,'bold'))
                Skip(-radius-20)
        else:
            t.dot(5,'blue')
            Skip(-radius)
        t.right(6)
def Week(n):
    week=['周一','周二','周三','周四','周五','周六','周日']
    return week[n.weekday()]
def Date(n):
    y=n.year
    m=n.month
    d=n.day
    return '%s年%d月%d日'%(y,m,d)
def Tick():
    n=datetime.today()
    second=n.second+n.microsecond*0.000001
    minute=n.minute+second/60.0
    hour=n.hour+minute/60.0
    secHand.setheading(6*second)
    minHand.setheading(6*minute)
    hurHand.setheading(30*hour)
    t.tracer(False)
    printer.pencolor('blue')
    printer.forward(65)
    printer.write(Week(n),align='center',font=('华文行楷',14,'bold'))
    printer.back(130)
    printer.write(Date(n),align='center',font=('华文行楷',14,'bold'))
    printer.home()
    t.tracer(True)
    t.ontimer(Tick,100)
def main():
    t.tracer(False)
    Init()
    SetupClock(160)
    t.tracer(True)
    Tick()
    t.mainloop()
if __name__ == '__main__':
    main()

求大佬出手相助。感激不尽!
搜索更多相关主题的帖子: def 时钟 center align write 
2023-09-02 13:59
一张纸白
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2023-8-31
收藏
得分:4 
怎么一半在下面
2023-09-02 15:53
一张纸白
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2023-8-31
收藏
得分:0 
2023-09-02 15:56
一张纸白
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2023-8-31
收藏
得分:0 
2023-09-02 15:57
小白在此
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2023-8-7
收藏
得分:0 
回复 2楼 一张纸白
我也不清楚
2023-09-02 17:12
一张白纸123
Rank: 2
等 级:论坛游民
帖 子:40
专家分:24
注 册:2023-8-31
收藏
得分:4 
可能是你点和数字的方位错了,把那些改一下

一张有内容的白纸
2023-09-03 10:10
一张白纸123
Rank: 2
等 级:论坛游民
帖 子:40
专家分:24
注 册:2023-8-31
收藏
得分:0 
你好

一张有内容的白纸
2023-09-03 17:10
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:243
专家分:2106
注 册:2019-8-16
收藏
得分:0 
回复 5楼 小白在此
程序代码:
import turtle as t
from datetime import*
def Skip(step):
    t.penup()
    t.forward(step)
    t.pendown()
def mkHand(name,length):
    t.reset()
    Skip(-length*0.1)
    t.begin_poly()
    t.forward(length*1.1)
    t.end_poly()
    handFrom=t.get_poly()
    t.register_shape(name,handFrom)
def Init():
    global secHand,minHand,hurHand,printer
    t.mode('logo')
    mkHand('secHand',135)
    mkHand('minHand',125)
    mkHand('hurHand',90)
    secHand=t.Turtle()
    secHand.penup()
    secHand.forward(135)
    secHand.pendown()
    secHand.pencolor('green')
    secHand.shape('secHand')
    minHand=t.Turtle()
    minHand.penup()
    minHand.forward(135)
    minHand.pendown()
    minHand.pencolor('red')
    minHand.shape('minHand')
    hurHand=t.Turtle()
    hurHand.penup()
    hurHand.forward(135)
    hurHand.pendown()
    hurHand.pencolor('blue')
    hurHand.shape('hurHand')
    for hand in secHand,minHand,hurHand:
        hand.shapesize(1,1,3)
        hand.speed(0)
    printer=t.Turtle()
    printer.hideturtle()
    printer.penup()
def SetupClock(radius):
    t.reset()
    t.pensize(7)
    for i in range(60):
        Skip(radius)
        if i%5 == 0:
            
            #Skip(-radius-20)
            #Skip(radius+20)
            if i == 0:
                Skip(radius)
                t.pencolor('red')
                t.backward(20)
                #t.forward(25)
                Skip(20)
                t.write(int(12),align='center',font=('华文行楷',14,'bold'))
                #t.forward(-25)
                #Skip(-radius-20)
            elif i == 30:
                t.pencolor('red')
                t.forward(20)
                Skip(25)
                t.write(int(i/5),align='center',font=('华文行楷',14,'bold'))
                Skip(-25)
            elif i == 25 or i == 35:
                t.pencolor('red')
                t.forward(20)
                Skip(20)
                t.write(int(i/5),align='center',font=('华文行楷',14,'bold'))
                Skip(-20)
            else:
                t.pencolor('red')
                t.forward(20)
                t.write(int(i/5),align='center',font=('华文行楷',14,'bold'))
            Skip(-radius-20)
        else:
            t.dot(5,'blue')
            Skip(-radius)
        t.right(6)
    n=datetime.today()
    printer.pencolor('blue')
    printer.forward(60)
    printer.write(Week(n),align='center',font=('华文行楷',14,'bold'))
    printer.backward(60)
    printer.forward(35)
    printer.write(Date(n),align='center',font=('华文行楷',14,'bold'))
    printer.backward(35)
    printer.home()
def Week(n):
    week=['周一','周二','周三','周四','周五','周六','周日']
    return week[n.weekday()]
def Date(n):
    y=n.year
    m=n.month
    d=n.day
    return '%s年%d月%d日'%(y,m,d)
def Tick():
    
    n=datetime.today()
    second=n.second+n.microsecond*0.000001
    minute=n.minute+second/60.0
    hour=n.hour+minute/60.0
    
    secHand.setheading(6*second)
    minHand.setheading(6*minute)
    hurHand.setheading(30*hour)
    t.tracer(True)
    t.ontimer(Tick,100)
def main():
    t.tracer(False)
    Init()
    SetupClock(160)
    t.tracer(True)
    Tick()
    t.mainloop()
if __name__ == '__main__':
    main()
2023-09-25 13:40
是刘啊
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2023-6-28
收藏
得分:0 
有些乱,可以去检查一下你的数值
2024-04-24 19:23
快速回复:时钟代码检查了几遍都没发现问题,但画出来的时钟是错乱的。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020712 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved