Python中turtle库的使用实例


Posted in Python onSeptember 09, 2019

Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种:

画笔控制函数

  • penup():抬起画笔;
  • pendown():落下画笔;
  • pensize(width):画笔宽度;
  • pencolor(color):画笔颜色;

运动控制函数

  • forward(d)/fd(d):直行d个像素;
  • circle(r, extent = None):绘制半径为r,角度为extent的弧形,圆心默认在海龟左侧距离r的位置;

方向控制函数

  • setheading(angle)/seth(angle):改变前进方向;
  • left(angle):海龟左转;
  • right(angle):海龟右转;

Turtle库的使用

#coding=utf-8
#绘制蟒蛇
import turtle
turtle.penup()
turtle.pencolor("red")
turtle.forward(-250)
turtle.pendown()
turtle.pensize(10)
turtle.right(45)
for i in range(4):
  turtle.circle(40, 80)
  turtle.circle(-40, 80)
turtle.circle(40, 80 / 2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2 / 3)
turtle.done()

结果

Python中turtle库的使用实例

#coding=utf-8
# 绘制五角星
import turtle
turtle.pensize(5)
turtle.pencolor("red")
turtle.forward(200)
for i in range(4):
  turtle.right(144)
  turtle.fd(200)
turtle.done()

结果

Python中turtle库的使用实例

#绘制时钟
# coding=utf-8
import turtle as tt
from datetime import *

# 当前日期属于一周的第几天
def Week(t):
  week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
  return week[t.weekday()]

# 获取当前时间
def Date(t):
  y = t.year
  m = t.month
  d = t.day
  cur_hour = t.hour;
  cur_min = t.minute;
  cur_sec = t.second;
  return "%s-%d-%d %d:%02d:%02d" % (y, m, d, cur_hour, cur_min, cur_sec)

# 移动画笔,距离为distance
def movePen(distance):
  tt.penup()
  tt.pensize(5)
  tt.pencolor("blue")
  tt.fd(distance)
  tt.pendown()

# 绘制表针
def makeHands(name, length):
  # 清空窗口,重置turtule状态为初始状态
  tt.reset()
  movePen(-length * 0.1)
  # 开始记录多边形的顶点
  tt.begin_poly()
  tt.fd(length * 1.1)
  # 停止记录多边形的顶点
  tt.end_poly()
  # 返回记录的多边形
  handForm = tt.get_poly()
  tt.register_shape(name, handForm)

# 初始化
def initial():
  global secHand, minHand, hurHand, printer
  # 重置方向向北(上),正角度为顺时针
  tt.mode("logo")
  # 建立并初始化表针
  makeHands("secHand", 180)
  makeHands("minHand", 150)
  makeHands("hurHand", 110)
  secHand = tt.Turtle()
  secHand.shape("secHand")
  minHand = tt.Turtle()
  minHand.shape("minHand")
  hurHand = tt.Turtle()
  hurHand.shape("hurHand")

  for hand in secHand, minHand, hurHand:
    hand.shapesize(1, 1, 4)
    hand.speed(0)

  # 输出文字
  printer = tt.Turtle()
  # 隐藏画笔
  printer.hideturtle()
  printer.penup()

# 绘制表盘外框
def drawClock(R):
  # 清空窗口,重置turtule状态为初始状态
  tt.reset()
  # 画笔尺寸
  tt.pensize(5)
  for i in range(60):
    movePen(R)
    if i % 5 == 0:
      tt.fd(20)
      movePen(-R - 20)

      movePen(R + 20)
      if i == 0:
        # 写文本
        tt.write(int(12), align="center", font=("Consolas", 14, "bold"))
      elif i == 30:
        movePen(25)
        tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
        movePen(-25)
      elif (i == 25 or i == 35):
        movePen(20)
        tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
        movePen(-20)
      else:
        tt.write(int(i / 5), align="center", font=("Consolas", 14, "bold"))
      movePen(-R - 20)
    else:
      # 绘制指定半径和颜色的点
      tt.dot(5, "red")
      movePen(-R)
    tt.right(6)

# 表针的动态显示
def handsMove():
  t = datetime.today()
  second = t.second + t.microsecond * 0.000001
  minute = t.minute + second / 60.0
  hour = t.hour + minute / 60.0
  secHand.seth(6 * second)
  minHand.seth(6 * minute)
  hurHand.seth(30 * hour)

  tt.tracer(False)
  printer.fd(65)
  tt.pencolor("green")
  printer.write(Week(t), align="center", font = ("黑体", 14))
  printer.back(130)
  printer.write(Date(t), align="center", font = ("Consolas", 14))
  # 设置当前画笔位置为原点,方向朝东
  printer.home()
  tt.tracer(True)

  # 经过100ms后继续调用handsMove函数
  tt.ontimer(handsMove, 100)

# 调用定义的函数,打开和关闭动画,为更新图纸设置延迟;
tt.tracer(False)
initial()
drawClock(200)
tt.tracer(True)
handsMove()
tt.mainloop()

结果

Python中turtle库的使用实例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python调用浏览器并打开一个网址的例子
Jun 05 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
python 不以科学计数法输出的方法
Jul 16 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
python小程序实现刷票功能详解
Jul 17 Python
详解python中的数据类型和控制流
Aug 08 Python
pytorch 输出中间层特征的实例
Aug 17 Python
python默认参数调用方法解析
Feb 09 Python
python中可以声明变量类型吗
Jun 18 Python
python如何实现DES加密
Sep 21 Python
Python如何解决secure_filename对中文不支持问题
Jul 16 Python
Django之路由层的实现
Sep 09 #Python
python中web框架的自定义创建
Sep 08 #Python
python web框架中实现原生分页
Sep 08 #Python
python中open函数的基本用法示例
Sep 07 #Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 #Python
利用python计算时间差(返回天数)
Sep 07 #Python
Django配置MySQL数据库的完整步骤
Sep 07 #Python
You might like
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Tensorflow 实现释放内存
2020/02/03 Python
python推导式的使用方法实例
2021/02/28 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
美丽的现代设计家具:2Modern
2018/07/26 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery