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开发之函数定义实例分析
Nov 12 Python
Python 中 Meta Classes详解
Feb 13 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
Aug 13 Python
python 变量初始化空列表的例子
Nov 28 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
python解释器安装教程的方法步骤
Jul 02 Python
Django rest framework分页接口实现原理解析
Aug 21 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 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
咖啡的植物学知识
2021/03/03 咖啡文化
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
微信小程序网络请求封装示例
2018/07/24 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
django修改models重建数据库的操作
2020/03/31 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
Python 实现微信自动回复的方法
2020/09/11 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
写好自荐信要注意的问题
2013/11/10 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
机动车登记业务委托书
2014/10/08 职场文书
2014财务年终工作总结
2014/12/08 职场文书
公历12个月名称的由来
2022/04/12 杂记
mysql sock 文件解析及作用讲解
2022/07/15 MySQL