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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
python登陆asp网站页面的实现代码
Jan 14 Python
Python实现Youku视频批量下载功能
Mar 14 Python
Django入门使用示例
Dec 12 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
完美解决TensorFlow和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脚本的10个技巧(3)
2006/10/09 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
关于Python如何避免循环导入问题详解
2017/09/14 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python实现二维插值的三维显示
2018/12/17 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
决定成败的关键——创业计划书
2014/01/24 职场文书
日语专业求职信
2014/07/04 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
后勤个人工作总结
2015/02/28 职场文书
专家推荐信范文
2015/03/26 职场文书
拖欠货款起诉状
2015/05/20 职场文书
活动新闻稿范文
2015/07/17 职场文书
联村联户简报
2015/07/21 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android