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中subprocess模块用法实例详解
May 20 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
python中强大的format函数实例详解
Dec 05 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
python argparser的具体使用
Nov 10 Python
三个python爬虫项目实例代码
Dec 28 Python
Python3的socket使用方法详解
Feb 18 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
python小技巧——将变量保存在本地及读取
Nov 13 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
phpize的深入理解
2013/06/03 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
vue开发中遇到的问题总结
2020/04/07 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
Python3.6简单反射操作示例
2018/06/14 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
C语言笔试题
2014/09/04 面试题
一夜的工作教学反思
2014/02/08 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL