用户:Hero_xu查看:0 回复:0 评论:0 创建时间:2020-07-27T13:53:10
【作品展示】

【作品介绍】
用眼睛看
【作品源代码】
# coding=utf8
from arcade import *
# 秒针 一秒钟6度正好 60*6=360 一圈
# 分针 每分钟动6度 正好 5*6=30度 # 6 / 60 = 0.1 # 即每秒钟走 0.1度
# 时针 每分钟动 0.5 度 正好 0.5*60=30度 0.5 / 60
class Pointer(object):
def __init__(self, name, value, lenghth, color, line_width, h, m, s):
self.name = name # name
self.value = value # 时间值
self.lenghth = lenghth # 线长度
self.color = color # 颜色
self.line_width = line_width # 线宽
self.xiao_shi = h
self.fen_zhong = m
self.miao_zhong = s
def draw(self): # 不断调用绘制
if self.name == "hour":
angle = 360 * self.value / 12 + (0.5 * self.fen_zhong)
else:
angle = 360 * self.value / 60
x, y = CENTER_X + self.lenghth * math.sin(math.radians(angle)), CENTER_Y + self.lenghth * math.cos(
math.radians(angle))
draw_line(CENTER_X, CENTER_Y, x, y, self.color, self.line_width)
class MyClock(arcade.Window):
def __init__(self, width, height, title):
super().__init__(width, height, title)
# 窗体初始化
self.setup()
def setup(self):
# 设置背景颜色
set_background_color(color.WHITE)
def on_draw(self):
start_render()
self.mydraw()
def mydraw(self):
# 表盘
r = 200
draw_circle_outline(CENTER_X, CENTER_Y, r, color.SKY_BLUE, 20)
# 数字
per = 360 / 12
for i in range(1, 13):
angle = per * i
x, y = CENTER_X + (r - 20) * math.sin(math.radians(angle)), CENTER_Y + (r - 20) * math.cos(
math.radians(angle))
draw_text(str(i), x, y, color.BLACK, 20, font_name=("simhei", "PingFang"), anchor_x="center",
anchor_y="center")
# 指针
import datetime
d = datetime.datetime.now()
h, m, s = d.hour, d.minute, d.second # 时 、分、 秒
hour = Pointer("hour", h, 70, color.GREEN, 15, h, m, s) # 时针
""" 参数 (name, 几时, 长度, 颜色 ,线宽) """
hour.draw()
minute = Pointer("minute", m, 120, color.BLUE, 10, h, m, s) # 分针
minute.draw()
second = Pointer("second", s, 150, color.RED, 5, h, m, s) # 秒针
second.draw()
# 轴心 小黑点
draw_circle_filled(CENTER_X, CENTER_Y, 10, color.BLACK)
# 年月日星期
year, month, day, week = d.year, d.month, d.day, d.weekday()
weeks = ["一", "二", "三", "四", "五", "六", "天"]
date = f"{year}年{month}月{day}日 星期{weeks[week]}"
draw_text(date, CENTER_X, CENTER_Y - 250, color.BLACK, 20, font_name=("simhei", "PingFang"), anchor_x="center",
anchor_y="center")
if __name__ == '__main__':
# 设置窗体宽和高
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600
# 设置窗体标题
SCREEN_TITLE = 'My Clock'
CENTER_X = SCREEN_WIDTH // 2
CENTER_Y = SCREEN_HEIGHT // 2
game = MyClock(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
run()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn