python k线图 动态刷新_使用python写一个动态时钟以及如何刷新项目

import turtle # 导入绘图海龟模块

import datetime # 导入日期时间模块

# 移动一段距离

def skip(distance): # 移动方法,不留移动痕迹

turtle.penup() # 抬笔不绘制

turtle.forward(distance) # 移动指定距离

turtle.pendown() # 落笔移动绘制

def draw_clock_dial(): # 绘制表盘的方法

turtle.reset() # 删除图形归位

turtle.hideturtle() # 隐藏箭头

for i in range(60): # 循环执行60次,一圈为360度所以每一秒的角度为6度

skip(160) # 移动160,相当于表盘圆的半径

# 每5秒绘制一个小时刻度

if i % 5 == 0:

turtle.pensize(7) # 刻度大小

# 画时钟

turtle.forward(20) # 小时刻度的长度为20

skip(-20) # 复原小时刻度的位置

else:

turtle.pensize(1) # 将画笔大小设置为1

turtle.dot() # 绘制分钟刻度的小圆点

skip(-160) # 回到中心位置

turtle.right(6) # 向右旋转6度

def get_week(t): # 获取星期的方法

week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']

return week[t.weekday()] # 返回当天的星期

def create_pointer(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())

def init_pointer(): # 初始化指针

global secHand, minHand, hurHand, printer

turtle.mode("logo") # 重置Turtle指向上

create_pointer(135,"secHand") # 创建秒针图形

create_pointer(110,"minHand") # 创建分针图形

create_pointer(90,"hurHand") # 创建时针图形

secHand = turtle.Turtle() # 创建秒针turtle对象

secHand.shape("secHand") # 创建指定秒针名称的形状

minHand = turtle.Turtle() # 创建分针turtle对象

minHand.shape("minHand") # 创建指定分针名称的形状

hurHand = turtle.Turtle() # 创建时针turtle对象

hurHand.shape("hurHand") # 创建指定时针名称的形状

for hand in secHand, minHand, hurHand: # 循环遍历三个指针

hand.shapesize(1, 1, 5) # 设置形状拉伸大小和轮廓线

hand.speed(0) # 设置速度为最快

printer = turtle.Turtle() # 创建绘制文字的Turtle对象

printer.hideturtle() # 隐藏箭头

printer.penup() # 抬笔

def move_pointer(): # 移动指针的方法

# 不停的获取时间

t = datetime.datetime.today()

second = t.second + t.microsecond * 0.000001 # 计算移动的秒

minute = t.minute + second/60 # 计算移动的分

hour = t.hour + minute/60 # 计算移动的小时

secHand.setheading(6*second) # 设置秒针的角度

minHand.setheading(6*minute) # 设置分针的角度

hurHand.setheading(30*hour) # 设置时针的角度

turtle.tracer(False) # 关闭绘画效果

printer.forward(65) # 向上移动65

# 绘制星期

printer.write(get_week(t), align="center",font=("Courier", 14, "bold"))

printer.back(130) # 倒退130

# 绘制年月日

printer.write(t.strftime('%Y-%m-%d'), align="center",font=("Courier", 14, "bold"))

printer.home() # 归位

turtle.tracer(True) # 开启绘画效果

turtle.ontimer(move_pointer, 10) # 10毫秒后调用move_pointer()方法

if __name__ == '__main__':

turtle.setup(450, 450) # 创建窗体大小

init_pointer() # 调用初始化指针的方法

turtle.tracer(False) # 关闭绘画效果

draw_clock_dial() # 绘制表盘

move_pointer() # 调用移动指针的方法

turtle.mainloop() # 不关闭窗体https://www.zhihu.com/video/1236734481249570816

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值