#!/usr/bin/env python
# -*- coding: utf-8 -*- from tkinter import *
import math
import threading
import time root = Tk()
cv = Canvas(root, bg='white')
cv.create_oval(10,10,210,210,fill='yellow')
cv.pack()
for num in range(12):
angle=num*30
x1 = abs(round(math.cos(math.pi*angle/180)*95)+110)
y1 = abs(110 - round(math.sin(math.pi*angle/180)*95))
x2 = abs(round(math.cos(math.pi*angle/180)*100)+110)
y2 = abs(110 - round(math.sin(math.pi*angle/180)*100))
if angle not in (0, 90, 180, 270):
cv.create_line(x1, y1, x2, y2) cv.create_line(110, 10, 110, 20, width=2, fill='red') #
cv.create_text(110, 35, text='')
cv.create_line(110, 200, 110, 210, width=2, fill='red') # 6
cv.create_text(110, 185, text='')
cv.create_line(10, 110, 20, 110, width=2, fill='red') #
cv.create_text(35, 110, text='')
cv.create_line(200, 110, 210, 110, width=2, fill='red') #
cv.create_text(185, 110, text='')
sec_pointer = cv.create_line(110, 110, 110, 110, fill='gray')
miu_pointer = cv.create_line(110, 110, 110, 110, fill='green', width=2)
hor_pointer = cv.create_line(110, 110, 110, 110, fill='red', width=3)
cnt_point = cv.create_oval(107, 107, 113, 113, fill='black') time_struct = time.localtime()
hour = time_struct.tm_hour - 12 if time_struct.tm_hour > 12 else time_struct.tm_hour
_min = time_struct.tm_min
sec = time_struct.tm_sec init_sec = sec*6
init_miu = _min*6 + sec*6/60
init_hor = hour * 30 + _min * 30/3600*60 + sec * 30/3600 def draw_pointer():
sec = 90 - init_sec
miu = 90 - init_miu
hor = 90 - init_hor
try:
while True:
x1 = abs(round(math.cos(math.pi*sec/180)*90)+110)
y1 = abs(110 - round(math.sin(math.pi*sec/180)*90))
x2 = abs(round(math.cos(math.pi*miu/180)*70)+110)
y2 = abs(110 - round(math.sin(math.pi*miu/180)*70))
x3 = abs(round(math.cos(math.pi*hor/180)*36)+110)
y3 = abs(110 - round(math.sin(math.pi*hor/180)*36))
cv.coords(sec_pointer, 110, 110, x1, y1)
cv.coords(miu_pointer, 110, 110, x2, y2)
cv.coords(hor_pointer, 110, 110, x3, y3)
if sec == -180:
sec = 180
if miu == -180:
miu = 180
if hor == -180:
hor = 180
sec -= 6
miu -= 6/60
hor -= 30/3600
time.sleep(1)
except RuntimeError as e:
exit(0) td = threading.Thread(target=draw_pointer,).start()
root.mainloop()

canvas部件使用方法参考地址:https://www.runoob.com/python/python-tk-canvas.html

Python-使用tkinter canvas绘制的电子时钟的更多相关文章

  1. 用canvas绘制一个简易时钟

    在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数 ...

  2. 使用canvas绘制时钟

    使用canvas绘制时钟  什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...

  3. [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板  一块 2.DS3231 ...

  4. canvas绘制表盘时钟

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. Python GUI - tkinter

    目录: Tkinter 组件 标准属性 几何管理 代码实例: 1. Label & Button 2. Entry & Text 3.Listbox列表 4.Radiobutton单选 ...

  6. 初识python:tkinter 实现 弹球小游戏(非面相对象)

    通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...

  7. 使用html5 canvas绘制圆形或弧线

    注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...

  8. 使用Canvas绘制简单的时钟控件

    Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表.动画等. 没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和F ...

  9. MFC桌面电子时钟的设计与实现

    目录 核心技术 需求分析 程序设计 程序展示 (一)核心技术 MFC(Micosoft Foundation Class Libay,微基础类库)是微基于Windows平台下的C++类库集合,MFC包 ...

随机推荐

  1. Java实现 LeetCode 670 最大交换(暴力)

    670. 最大交换 给定一个非负整数,你至多可以交换一次数字中的任意两位.返回你能得到的最大值. 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7. 示例 2 : 输入: ...

  2. Java实现 蓝桥杯 基础练习 查找整数

    基础练习 查找整数 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个. 输入格式 第一行包含一个整数n ...

  3. java实现最大连续和问题

    /* 10 5 -3 12 -31 15 22 -7 6 -8 -9 10 .... 暴力:O(n^3) 分治:[ mid ) 三种情况求最大 基线法: O(n) 2个数组: 从左到本位:出现的最大累 ...

  4. 疫情期间我是如何拿到20k的offer,2020年php面试题汇总

    推荐视频:面试10家公司,收获9个offer,2020年PHP 面试问题 第一阶段1-2年 我认为1-2年对于PHP程序员来说是第一个门槛,这一阶段菜鸟正式从理论迈向企业级开发.我们知道如何使用工具. ...

  5. Flask 的 session

    Flask 的 session @app.route("/", ) def index(): # 如何设置sessoion # 1 导入session # 2 给sessoion设 ...

  6. hadoop知识整理(2)之MapReduce

    之前写的关于MR的文章的前半部分已丢. 所以下面重点从3个部分来谈MR: 1)Job任务执行过程,以及主要进程-ResourceManager和NodeManager作用: 2)shuffle过程: ...

  7. Flask 蓝图(Blueprint)使用方式解析

    Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰.简单易懂.下面分析蓝图的使用方法 假如说我们要为某所学校的每个人建立一份档案,一个很自然的优化方式就是这些档案如果能分类管理,就是说假如分 ...

  8. UWP实现第二字幕并且跟随系统的设置

    话不多说,先看一下最终效果 系统设置默认 在系统设置里面更改字幕的显示效果 需求 要求播放器可以显示第二字幕,类似旁白的文字解释.比如片中出现了一个专业术语,这个时候观众可能有些疑惑.所以需要在屏幕上 ...

  9. 05.DRF-Django REST framework 简介

    一.明确REST接口开发的核心任务 分析一下上节的案例,可以发现,在开发REST API接口时,视图中做的最主要有三件事: 将请求的数据(如JSON格式)转换为模型类对象 操作数据库 将模型类对象转换 ...

  10. Beta 冲刺

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 Beta 冲刺 汇总博客 作业正文 如下 其他参考文献 ... 说明:此博客 ...