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 29 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
使用Scrapy爬取动态数据
Oct 21 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
Python基础学习之函数方法实例详解
Jun 18 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
如何基于python生成list的所有的子集
Nov 11 Python
python opencv进行图像拼接
Mar 27 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
Django中ORM的基本使用教程
Dec 22 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的可变变量名需要的注意的问题
2013/06/20 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
js文字滚动停顿效果代码
2008/06/28 Javascript
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
js+html5生成自动排列对话框实例
2017/10/09 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
python语音识别实践之百度语音API
2018/08/30 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
社会实践自我鉴定
2013/11/07 职场文书
企业行政文员岗位职责
2013/12/03 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
公司建议书怎么写
2014/05/15 职场文书
医院感染管理制度
2015/08/05 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
高效课堂教学反思
2016/02/24 职场文书