Python-使用tkinter canvas绘制的电子时钟
#!/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绘制的电子时钟的更多相关文章
- 用canvas绘制一个简易时钟
在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数 ...
- 使用canvas绘制时钟
使用canvas绘制时钟 什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板 一块 2.DS3231 ...
- canvas绘制表盘时钟
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Python GUI - tkinter
目录: Tkinter 组件 标准属性 几何管理 代码实例: 1. Label & Button 2. Entry & Text 3.Listbox列表 4.Radiobutton单选 ...
- 初识python:tkinter 实现 弹球小游戏(非面相对象)
通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...
- 使用html5 canvas绘制圆形或弧线
注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...
- 使用Canvas绘制简单的时钟控件
Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表.动画等. 没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和F ...
- MFC桌面电子时钟的设计与实现
目录 核心技术 需求分析 程序设计 程序展示 (一)核心技术 MFC(Micosoft Foundation Class Libay,微基础类库)是微基于Windows平台下的C++类库集合,MFC包 ...
随机推荐
- Java实现 蓝桥杯 历届试题 小计算器
历届试题 小计算器 时间限制:1.0s 内存限制:256.0MB 问题描述 模拟程序型计算器,依次输入指令,可能包含的指令有 1. 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个 ...
- Java实现 LeetCode 172 阶乘后的零
172. 阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! ...
- Java实现 LeetCode 130 被围绕的区域
130. 被围绕的区域 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O ...
- Java实现 LeetCode 111 二叉树的最小深度
111. 二叉树的最小深度 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nu ...
- Linux权限管理命令chown、chgrp、umask详解
命令chown详解 命令chown,所在路径为: 可以看到,这个命令的路径为:/usr/bin/chown ,所以它的执行权限是所有用户 命令的基本功能是改变文件或目录的所有者(只有root可以进行, ...
- 【Nodejs】HTML 实时同步(类似Vue实时同步刷新文件->浏览器)
1. 安装 Node.js BrowserSync是基于Node.js的, 是一个Node模块, 如果您想要快速使用它,也许您需要先安装一下Node.js安装适用于Mac OS,Windows和Lin ...
- Node第三方模块
node第三方模块集合 1.nrm 切换npm下载的镜像地址 nrm ls 查看可用镜像 nrm use +镜像名 2.nodemon 在控制台nodenom替代node命令执行nodejs文件, ...
- HDU - 2546 饭卡 题解
题目大意 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够) ...
- .Net Core实战之基于角色的访问控制的设计
前言 上个月,我写了两篇微服务的文章:<.Net微服务实战之技术架构分层篇>与<.Net微服务实战之技术选型篇>,微服务系列原有三篇,当我憋第三篇的内容时候一直没有灵感,因此先 ...
- FR嵌套报表(Nested Report)
//主界面只是说明放置了哪些东西(3个ADOQuery不必放): //MasterSource.MasterField的设置如下: 1) Customer.Orders.Items 的 MasterS ...