# coding:utf-8
# 绘制七段数码管,显示当前时间
import time
import turtle
import win32api,win32con # win 系统
#from AppKit import NSScreen # mac 系统 需要安装 PyObjC PyObjC-core
# 绘制间隔
def drawGap_d():
turtle.penup()
turtle.fd(int(penfd/10))
def init_d():
turtle.penup()
turtle.goto(0, 0)
turtle.fd(-fd_left)
turtle.speed(10)
turtle.pensize(pensize)
# 绘制单段数码管
def drawLine_d(draw):
drawGap_d()
turtle.pendown() if draw else turtle.penup()
turtle.fd(line_l) #笔画长度
drawGap_d()
turtle.right(90)
# 绘制当前时间
def drawDate_d(date):
turtle.pencolor("red") # 年 的颜色
for i in date:
if i == '+':
#turtle.right(90) # 调整汉子的上下位置
#turtle.fd(digi_dist)
turtle.write("年", font = ("黑体",font_s1, "normal"))
#turtle.left(180)
#turtle.bk(-digi_dist)
#turtle.right(90)
turtle.pencolor("green") # 月 的颜色
turtle.fd(penfd)
elif i == '-':
turtle.write("月", font=("黑体", font_s1, "normal"))
turtle.pencolor("blue") # 日 的颜色
turtle.fd(penfd)
elif i == '*':
turtle.write("日", font=("黑体", font_s1, "normal"))
turtle.pencolor("darkblue") # 时 的颜色
turtle.fd(penfd)
elif i == '=':
turtle.write("时", font=("黑体", font_s1, "normal"))
turtle.pencolor("gold") # 分 的颜色
turtle.fd(penfd)
elif i == '#':
turtle.write("分", font=("黑体", font_s1, "normal"))
turtle.pencolor("black") # 秒 的颜色
turtle.fd(penfd)
elif i == '$':
turtle.write("秒", font=("黑体", font_s1, "normal"))
else:
drawDigit_d(eval(i))
# 绘制数码管
def drawDigit_d(d):
drawLine_d(True) if d in [2, 3, 4, 5, 6, 8, 9] else drawLine_d(False) # g
drawLine_d(True) if d in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawLine_d(False) # c
drawLine_d(True) if d in [0, 2, 3, 5, 6, 8, 9] else drawLine_d(False) # d
drawLine_d(True) if d in [0, 2, 6, 8] else drawLine_d(False) # e
turtle.left(90) # 经历一次右转后,调整左转,方向竖直向上
drawLine_d(True) if d in [0, 4, 5, 6, 8, 9] else drawLine_d(False)
drawLine_d(True) if d in [0, 2, 3, 5, 6, 7, 8, 9] else drawLine_d(False)
drawLine_d(True) if d in [0, 1, 2, 3, 4, 7, 8, 9] else drawLine_d(False)
turtle.left(180)
turtle.penup()
turtle.fd(digi_dist)
# 主函数
def main1():
global pensize,penfd,fd_left,font_s1,line_l,digi_dist
turtle.clearscreen()
width = int(win32api.GetSystemMetrics(win32con.SM_CXSCREEN)) # win 用这行
high = int(win32api.GetSystemMetrics(win32con.SM_CYSCREEN)) # win 用这行
#width = NSScreen.mainScreen().frame().size.width # mac 用这行
#high = NSScreen.mainScreen().frame().size.height # mac 用这行
fd_left= int(width*0.8*0.55) # 左边界数字
pensize= int(width*0.008)
line_l= int(width*0.8/24)
penfd= int(width*0.8/32)
digi_dist =int(width*0.015)
font_s1= int(high*0.023)
turtle.setup(width*0.95, high*0.2, width*0.05/2, 0)
turtle.title("数字时钟 陆怡彤")
turtle.bgcolor("silver")
turtle.hideturtle()
try:
while True:
init_d()
turtle.clear()
turtle.getscreen().tracer(30, 0)
drawDate_d(time.strftime('%Y+%m-%d*%H=%M#%S$', time.localtime()))
time.sleep(0.99)
turtle.goto(0, 0)
turtle.fd(-fd_left)
except:
pass
if __name__ == "__main__":
main1()