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自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
用Python开发app后端有优势吗
Jun 29 Python
Python实现数字的格式化输出
Aug 01 Python
Python切片列表字符串如何实现切换
Aug 06 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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基于单例模式实现的mysql类
2016/01/09 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
cdn模式下vue的基本用法详解
2018/10/07 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
python查询mysql,返回json的实例
2018/03/26 Python
python实现杨氏矩阵查找
2019/03/02 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
网络工程专业毕业生推荐信
2013/10/28 职场文书
父母对孩子说的话
2014/04/12 职场文书
团员个人总结
2015/02/26 职场文书
工作态度不好检讨书
2015/05/06 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python