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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
跟老齐学Python之编写类之一创建实例
Oct 11 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
对python 中class与变量的使用方法详解
Jun 26 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
Keras 使用 Lambda层详解
Jun 10 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 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中常用的输出函数总结
2014/09/22 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
vue实现购物车案例
2020/05/30 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python的正则表达式re模块的常用方法
2013/03/09 Python
python中的错误处理
2016/04/10 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python如何编写win程序
2020/06/08 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
档案室主任岗位职责
2014/02/12 职场文书
安全技术说明书
2014/05/09 职场文书
求职信模板
2014/05/23 职场文书
青年文明号口号
2014/06/17 职场文书
成都人事代理协议书
2014/10/25 职场文书
人民的好儿女观后感
2015/06/18 职场文书
校园之声广播稿
2015/08/18 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android