#!/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 391 完美矩形

    391. 完美矩形 我们有 N 个与坐标轴对齐的矩形, 其中 N > 0, 判断它们是否能精确地覆盖一个矩形区域. 每个矩形用左下角的点和右上角的点的坐标来表示.例如, 一个单位正方形可以表示为 ...

  2. 第八届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.平方十位数 题目描述 由0~9这10个数字不重复.不遗漏,可以组成很多10位数字. 这其中也有很多恰好是平方数(是某个数的平方). 比 ...

  3. Java实现堆排序问题(变治法)

    问题描述 用基于变治法的堆排序算法对任意一组给定的数据进行排序 2.1 堆排序原理简介 堆可以定义为一颗二叉树,树的节点中包含键(每个节点是一个键),并且满足下面两个条件: (1)树的形状要求--这颗 ...

  4. 02 . Tomcat集群会话共享

    redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...

  5. lambda表达式操作DataTable

    using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text; ...

  6. struts 通配符的使用

    使用通配符可以将配置量降到最低,十分方便 新建一个javaweb项目 在项目中加入Struts.xml( 选中项目右键MyEclipse-->project facets-->Struts ...

  7. 关于adb命令的基本使用

    在我们使用adb命令之前,我们要安装一个安卓模拟器(夜神.逍遥.海马王......),这里以夜神安卓模拟器为准(个人推荐,没用过可以使用夜神模拟器). 进入夜神安卓模拟器官网:https://www. ...

  8. vue2.0+Element UI 表格前端分页和后端分页

    之前写过一篇博客,当时对element ui框架还不太了解,分页组件用 html + css 自己写的,比较麻烦,而且只提到了后端分页 (见 https://www.cnblogs.com/zdd20 ...

  9. 【译】Introducing YARP Preview 1

    1 YARP YARP是一个项目,用于创建反向代理服务器.它开始于我们注意到来自微软内部团队的一系列问题.他们要么为其服务构建反向代理,要么询问 API 和用于构建 API 的技术.因此我们决定让他们 ...

  10. 【福利】FL Studio 20 汉化补丁包 _FL Studio 20 汉化包下载

    我这两天在网上搜索FL Studio 20汉化包,找了半天也没有找到真正的汉化包,不过好在功夫不负有心人,让我找到了一个不错的FL Studio 20汉化网站,里面提供了FL Studio 20汉化包 ...