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单链表的简单实现方法
Sep 23 Python
在Python中实现贪婪排名算法的教程
Apr 17 Python
详细解析Python中__init__()方法的高级应用
May 11 Python
Python中random模块用法实例分析
May 19 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 Python
Python 实现微信自动回复的方法
Sep 11 Python
python中altair可视化库实例用法
Jan 26 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
MySQL授权问题总结
2007/05/06 PHP
php强制下载类型的实现代码
2011/04/21 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
js实现的倒计时按钮实例
2015/06/24 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
js实现秒表计时器
2019/12/16 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
python config文件的读写操作示例
2019/09/27 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
社会实践评语
2014/04/28 职场文书
微信小程序调用python模型
2022/04/21 Python