python交互式图形编程实例(三)


Posted in Python onNovember 17, 2017

本文实例为大家分享了python交互式图形编程实例的第三部代码,供大家参考,具体内容如下

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#时钟

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) #画笔向前移动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", 130)
  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) #画笔抬起,向前移动“radius”具体
    if i % 5 == 0:
      forward(20) #如果能被5整除,就向前移动20
      Skip(-radius-20) #画笔再回退到原位置
    else:
      dot(5) #画一个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) #秒针设定的角度 一圈360度,一圈60秒 360/60 = 6
  minHand.setheading(6*minute) #分针设定的角度 一圈360度,一圈60分钟 360/60 = 6
  hurHand.setheading(30*hour) #时针设定的角度 一圈360度,一圈12小时 360/12 = 30
   
  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()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#键盘值查询

from tkinter import * 
  
root=Tk() 
  
#创建一个框架,在这个框架中响应事件 
frame=Frame(root,width=256,height=256) 
  
def callBack(event): 
  print(event.keysym) 
  
frame.bind("<KeyPress>",callBack) 
frame.pack() 
  
#当前框架被选中,意思是键盘触发,只对这个框架有效 
frame.focus_set() 
  
mainloop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
初学Python实用技巧两则
Aug 29 Python
python执行get提交的方法
Apr 29 Python
Python import用法以及与from...import的区别
May 28 Python
浅述python中argsort()函数的实例用法
Mar 30 Python
浅谈python中requests模块导入的问题
May 18 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
Python如何用filter函数筛选数据
Mar 05 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
R语言 vs Python对比:数据分析哪家强?
Nov 17 #Python
python交互式图形编程实例(二)
Nov 17 #Python
python交互式图形编程实例(一)
Nov 17 #Python
Python金融数据可视化汇总
Nov 17 #Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 #Python
Python中super函数的用法
Nov 17 #Python
python使用正则表达式替换匹配成功的组
Nov 17 #Python
You might like
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
javascript的函数作用域
2014/11/12 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
vue生命周期的探索
2019/04/03 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
Python版中国省市经纬度
2020/02/11 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
公司合作意向书
2014/04/01 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
史上最牛辞职信
2015/05/13 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python