侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python中turtle库的使用实例

Python  /  管理员 发布于 7年前   398

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 turtleturtle.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()

结果

#coding=utf-8# 绘制五角星import turtleturtle.pensize(5)turtle.pencolor("red")turtle.forward(200)for i in range(4):  turtle.right(144)  turtle.fd(200)turtle.done()

结果

#绘制时钟# coding=utf-8import turtle as ttfrom 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)# 移动画笔,距离为distancedef 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 的 openpyxl模块 读取 Excel文件的方法
    下一条:
    python中web框架的自定义创建
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客