python ——钟表
1、表盘
from turtle import *
from datetime import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 SetupClock(160)
2、添加指针
from turtle import *
from datetime import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
#清空窗口,重置默认值
Skip(-length*0.1)#先回一点
begin_poly()#初始点
forward(length*1.1)
end_poly()#结束点
handForm = get_poly()#返回最后记录的多边形
register_shape(name, handForm)#寄存器形状,安装相应的多边形
goto(0,0) def Init():
global secHand, minHand, hurHand, printer
mode("logo")# 重置Turtle指向北 #建立三个表针Turtle并初始化
mkHand("secHand", 125)
right(30)
mkHand("minHand", 110)
right(30)
mkHand("hurHand", 90) secHand = Turtle()
secHand.shape("secHand")
minHand = Turtle()
minHand.shape("minHand")
hurHand = Turtle()
hurHand.shape("hurHand") for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0) #建立输出文字Turtle
printer = Turtle()
printer.hideturtle()
printer.penup() #画表框
def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 Init()
tracer(False)
SetupClock(160)
3、时间
from datetime import *
from turtle import * #时分秒
t = datetime.today()
print(t)
print(t.microsecond)
print(t.second)
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0 #星期
print(t.weekday())
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
print(week[t.weekday()]) #年月日
y = t.year
m = t.month
d = t.day
# return "%s %d %d" % (y, m, d)
print(y,"-",m,"-",d) tracer(False)
mode("logo")# 重置Turtle指向北
printer = Turtle()
printer.forward(65)
printer.write(week[t.weekday()], align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.back(130)
printer.write("%d-%d-%d"%(y,m,d),align="center",font=("Courier", 14, "bold"))#日期标在图中
from datetime import *
from turtle import * #时分秒
t = datetime.today()
print(t)
print(t.microsecond)
print(t.second)
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0 #星期
print(t.weekday())
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
print(week[t.weekday()]) #年月日
y = t.year
m = t.month
d = t.day
# return "%s %d %d" % (y, m, d)
print(y,"-",m,"-",d) tracer(False)
mode("logo")# 重置Turtle指向北
printer = Turtle()
printer.hideturtle()
printer.penup()#提起画笔,便没了那两道轨迹
printer.forward(65)
printer.write(week[t.weekday()], align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.back(130)
printer.write("%s-%d-%d"%(y,m,d),align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.home()
tracer(True)
from datetime import *
from turtle import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
#清空窗口,重置默认值
Skip(-length*0.1)#先回一点
begin_poly()#初始点
forward(length*1.1)
end_poly()#结束点
handForm = get_poly()#返回最后记录的多边形
register_shape(name, handForm)#寄存器形状,安装相应的多边形
goto(0,0) def Init():
global secHand, minHand, hurHand, printer
mode("logo")# 重置Turtle指向北
right(90)
#建立三个表针Turtle并初始化
mkHand("secHand", 125)
right(30)
mkHand("minHand", 110)
right(30)
mkHand("hurHand", 90) secHand = Turtle()
secHand.shape("secHand")
minHand = Turtle()
minHand.shape("minHand")
hurHand = Turtle()
hurHand.shape("hurHand") for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0) #建立输出文字Turtle
printer = Turtle()
printer.hideturtle()
printer.penup() #画表框
def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 tracer(False)
Init()
SetupClock(160)
tracer(True) #时分秒
t = datetime.today()
print(t)
print(t.microsecond)
print(t.second)
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0 #星期
print(t.weekday())
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
print(week[t.weekday()]) #年月日
y = t.year
m = t.month
d = t.day
# return "%s %d %d" % (y, m, d)
print(y,"-",m,"-",d) tracer(False)
#mode("logo")# 重置Turtle指向北
printer = Turtle()
printer.penup()
printer.hideturtle()
printer.forward(65)
printer.write(week[t.weekday()], align="center",font=("Courier", 14, "bold"))#日期标在图中
printer.back(130)
printer.write("%d-%d-%d"%(y,m,d), align="center",font=("Courier", 14, "bold"))#日期标在图中
tracer(True)
4、动态显示
将时间和角度对应起来,换算到角度,然后和指针对应起来
from turtle import *
from datetime import * def Skip(step):#表盘不连续地画图
penup()
forward(step)
pendown() def mkHand(name, length):
#注册Turtle形状,建立表针Turtle
reset()
Skip(-length*0.1)
begin_poly()#多边形第一个顶点
forward(length*1.1)
end_poly()
handForm = get_poly()
register_shape(name, handForm) def Init():
global secHand, minHand, hurHand, printer
mode("logo")# 重置Turtle指向北,为后续角度提供便利
#建立三个表针Turtle并初始化
mkHand("secHand", 125)
mkHand("minHand", 115)
mkHand("hurHand", 90)
secHand = Turtle()
secHand.shape("secHand")
minHand = Turtle()
minHand.shape("minHand")
hurHand = Turtle()
hurHand.shape("hurHand")
for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0)
#建立输出文字Turtle
printer = Turtle()
printer.hideturtle()
printer.penup() #画表框
def SetupClock(radius):
#建立表的外框
reset()
pensize(7)
for i in range(60):
Skip(radius)#跨越中间这段不画
if i % 5 == 0:
forward(20)
Skip(-radius-20)#抬起画笔,回到原处
else:
dot(5)
Skip(-radius)#抬起画笔,回到圆心
right(6)#回到圆心,方向旋转6度 def Week(t):
week = ["星期一", "星期二", "星期三",
"星期四", "星期五", "星期六", "星期日"]
return week[t.weekday()] def Date(t):
y = t.year
m = t.month
d = t.day
return "%s %d %d" % (y, m, d) def Tick():
#绘制表针的动态显示
t = datetime.today()
second = t.second + t.microsecond*0.000001
minute = t.minute + second/60.0
hour = t.hour + minute/60.0
secHand.setheading(6*second)
minHand.setheading(6*minute)
hurHand.setheading(30*hour) tracer(False)
printer.forward(65)
printer.write(Week(t), align="center",
font=("Courier", 14, "bold"))
printer.back(130)
printer.write(Date(t), align="center",
font=("Courier", 14, "bold"))
printer.home() tracer(True) ontimer(Tick, 100)#100ms后继续调用tick def main():
tracer(False)#不刷新,最后一次刷新,省时间
Init()
SetupClock(160)
tracer(True)
Tick()
mainloop() if __name__ == "__main__":
main()
python ——钟表的更多相关文章
- 有限状态机(Python)
有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.FSM是一种算法思想,简单而言,有限状 ...
- Python::OS 模块 -- 进程管理
os模块的简介参看 Python::OS 模块 -- 简介 os模块的文件相关操作参看 Python::OS 模块 -- 文件和目录操作 os模块的进程参数 Python::OS 模块 -- 进程参数 ...
- D14——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...
- tensorflow和python操作中的笔记
前一段时间做了一些项目,把一些笔记放在了txt中,现分享出来,自己也能够时长预习. 1) 读取文件时,将固定的文件地址,采用数组或者字符串的形式,提前表示出来,后期使用时候采用拼接操作 2) # 得到 ...
- 【python】列出http://www.cnblogs.com/xiandedanteng中所有博文的标题
代码: # 列出http://www.cnblogs.com/xiandedanteng中所有博文的标题 from bs4 import BeautifulSoup import requests u ...
- Python练手项目实例汇总(附源码下载)
今天给大家分享几个有趣的Python练手项目实例,希望对Python初学者有帮助哈~ 一.经典的俄罗斯方块 1. 绑定功能 1 # 绑定功能 2 class App(Frame): 3 def _ ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
随机推荐
- javascript输入用户名,在服务器中显示出了
## 第一个文件 pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Tra ...
- echart 新手踩坑
仪表盘踩坑 我采用的是单文件引入的方式来加载echarts图标也可以使用配置等方式详情参考文档,如果同学们要做出更加丰富的样式请参考文档配置手册配置手册:http://echarts.baidu.co ...
- seo搜索优化教程14-seo搜索优化实战
为了使大家更方便的了解及学习网络营销推广.seo搜索优化,星辉信息科技强势推出seo搜索优化教程.此为seo教程第14课 根据前面学习的seo搜索优化内容,星辉科技进行总结性的分析,形成一份标准的se ...
- MySQL 【教程一】
前言 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存 ...
- aosp 制作 rom 刷机 添加厂家二进制驱动 及 出厂镜像
首先介绍下背景知识. aosp 仅是一套源码,不含厂家驱动. CM安卓的厂家驱动是自行提取的. 一般的安卓手机分区,有 boot , system, user , Baseband 基带, recov ...
- C语言程序设计(十二) 结构体和共用体
第十二章 结构体和共用体 当需要表示复杂对象时,仅使用几个基本数据类型显然是不够的 根本的解决方法是允许用户自定义数据类型 构造数据类型(复合数据类型)允许用户根据实际需要利用已有的基本数据类型来构造 ...
- c#语言 中FileStream类的基本使用
FileStream类不是静态类,使用时需要创建对象,FileStream类既可以对文本文件进行读也可以对多媒体文件进行写,以字节数组的形式进行读和写,多用于对大文件进行读写,区别于File类的是它对 ...
- 【Weiss】【第03章】练习3.20:中缀表达式转后缀表达式
[练习3.20] a.编写一个程序将中缀表达式转换为后缀表达式,该中缀表达式含括号及四则运算. b.把幂操作符添加到你的指令系统中去. c.编写一个程序将后缀表达式转化为中缀表达式. Answer: ...
- mysql主从复制(主从同步)
mysql主从同步 1.mysql主从同步(复制)概念 1. 将Mysql某一台主机数据复制到其它主机(slaves)上,并重新执行一遍来实现的. 2. 复制过程中一个服务器充当主服务器,而一个或多个 ...
- 使用WireShark进行网络流量安全分析
WireShark的过滤规则 伯克利包过滤(BPF)(应用在wireshark的捕获过滤器上) ** 伯克利包过滤中的限定符有下面的三种:** Type:这种限定符表示指代的对象,例如IP地址,子网或 ...