#!/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实现 蓝桥杯VIP 算法训练 确定元音字母位置

    算法训练 确定元音字母位置 时间限制:1.0s 内存限制:512.0MB 输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0.英语元音字母只有'a'.'e'.'i'. ...

  2. Java实现 LeetCode 148 排序链表

    148. 排序链表 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序. 示例 1: 输入: 4->2->1->3 输出: 1->2->3-> ...

  3. Java实现 LeetCode 15 三数之和

    15. 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...

  4. java实现第五届蓝桥杯等额本金

    等额本金 题目描述 小明从银行贷款3万元.约定分24个月,以等额本金方式还款. 这种还款方式就是把贷款额度等分到24个月.每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息. 假设月利率是 ...

  5. spring Cloud负载均衡Ribbon

    Ribbon饥饿加载 默认情况下Ribbon是懒加载的.当服务起动好之后,第一次请求是非常慢的,第二次之后就快很多. 解决方式:开启饥饿加载 ribbon: eager-load: enabled: ...

  6. 查看Android系统中硬件信息的文件

    文件目录: 使用Linux命令,进入到/proc目录 进入/proc目录,可以查看内存信息(memoinfo)或CPU信息(cpuinfo),使用cat命令

  7. Vue路由-详细总结

    Vue路由vue-router   前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL ...

  8. ubuntu18.04安装qt时候的错误解决

    在ubuntu系统下安装好qt5.5后启动qtceator时提示: Qt5.5.1/Tools/QtCreator/lib/qtcreator/plugins/libHelp.so: 无法加载库Qt5 ...

  9. js 不同时间格式介绍以及相互间的转换

    首先必须要提到的是 Date 对象,它用来处理时间和日期. 使用 new Date() 语句可创建 Date 对象,创建出来的时间格式如下(后面提到的标准时间都是指该格式): Wed Jul 17 2 ...

  10. Dedecms升级php版本{dede:field.body/}不解析,文章内容不显示

    Dedecms升级php7后发布文章后,发现前端显示的文章内容都是空白,只能显示标题.关键词.描述等. 第一种方法: 把{dede:field.body /}删除,使用 下面的sql 标签代码替换: ...