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 二分查找和快速排序实例详解
Oct 13 Python
Python文件的读写和异常代码示例
Oct 31 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
python频繁写入文件时提速的方法
Jun 26 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
python中tab键是什么意思
Jun 18 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 Python
在python中实现导入一个需要传参的模块
May 12 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使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
python自动发送邮件脚本
2018/06/20 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
keras导入weights方式
2020/06/12 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
new修饰符是起什么作用
2015/06/28 面试题
幼儿园教师备课制度
2014/01/12 职场文书
学习雷锋活动总结
2014/04/29 职场文书
超市促销活动总结
2014/07/01 职场文书
委托证明模板
2014/09/16 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
优秀教师推荐材料
2014/12/16 职场文书
疾病证明书
2015/06/19 职场文书