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 functools模块学习总结
May 09 Python
python中关于for循环的碎碎念
Jun 30 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
django跳转页面传参的实现
Sep 17 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
python中time包实例详解
Feb 02 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 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
新浪新闻小偷
2006/10/09 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
JavaScript DOM基础
2015/04/13 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
Python功能键的读取方法
2015/05/28 Python
Python实现的密码强度检测器示例
2017/08/23 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
教师远程培训感言
2014/03/06 职场文书
安全标语大全
2014/06/10 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
男方婚礼答谢词
2015/01/20 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
2015年导购员工作总结
2015/04/25 职场文书
运动员入场前导词
2015/07/20 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android