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 19 Python
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
Python实例一个类背后发生了什么
Feb 09 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
python学习必备知识汇总
Sep 08 Python
利用pandas读取中文数据集的方法
Jul 25 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
简单了解python变量的作用域
Jul 30 Python
如何用Python进行时间序列分解和预测
Mar 01 Python
Python使用Web框架Flask开发项目
Jun 01 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
php利用单例模式实现日志处理类库
2014/02/10 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
JSON语法五大要素图文介绍
2012/12/04 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
Python实现的数据结构与算法之双端队列详解
2015/04/22 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
Python实现结构体代码实例
2020/02/10 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
婚礼新郎父母答谢词
2014/01/16 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
企业员工培训感言
2014/02/26 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
小学推普周活动总结
2015/05/07 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
小学运动会加油稿
2015/07/22 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang