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 判断一个进程是否存在
Apr 09 Python
Python实现的二维码生成小软件
Jul 11 Python
Python中input和raw_input的一点区别
Oct 21 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
Python实现直播推流效果
Nov 26 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 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中的一些数组排序方法分享
2012/07/20 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
php中请求url的五种方法总结
2017/07/13 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
超级强大的表单验证
2006/06/26 Javascript
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
python实现聚类算法原理
2018/02/12 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
Python dict的常用方法示例代码
2020/06/23 Python
Python request post上传文件常见要点
2020/11/20 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
毕业生自荐书
2013/12/18 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
廉洁自律承诺书
2014/03/27 职场文书
新手上路标语
2014/06/20 职场文书
小学教研工作总结2015
2015/05/13 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
对讲机的最大通讯距离是多少
2022/02/18 无线电
python通过新建环境安装tfx的问题
2022/05/20 Python