Python学习-8.1.3 标准库(turtle库的基础与实例)

news2024/11/15 22:33:07

2.3 turtle库

turtle库是能够进行基本的图形绘制的标准库。
在这里插入图片描述
turtle库包含100多个功能函数,主要包括三类:窗体函数、画笔运动函数、画笔状态函数

2.3.1 窗体函数
在这里插入图片描述
注:像素是指组成图像的小方格,每个小方格都有一个明确的位置和被分配的色彩数值。
另外画布的大小与计算机的分辨率有关系,计算机的分辨率是指显示器所能显示的像素有多少。

窗体函数写法:turtle.setup(width,height,startx,starty)
需要与turtle.done()配合使用,否则运行出的窗口会消失。因此done()函数需要在绘制程序的最后面

import turtle
turtle.setup(200,200,50,50)#窗格大小为200X200,距离屏幕左侧与顶部均为50
turtle.done()#done()函数保证运行出的窗口一直显示

输出的窗格:在这里插入图片描述
2.3.2 画笔运动函数
重点的画笔运动函数:在这里插入图片描述
**注意:**若不指定方向和起点,则默认方向为向右,默认起点为窗格正中心。

  • forward()函数:沿着当前方向前进指定距离。可以简写为fd()
import turtle
turtle.setup()
turtle.forward(200)#沿着当前方向前进200个像素
turtle.done()#done()需要在绘制程序的最后面

绘制窗格:在这里插入图片描述

  • backward()函数:沿着当前相反方向后退指定距离
    也简写为back(),或bk()
import turtle
turtle.setup()
turtle.forward(200)
turtle.forward(200)
turtle.back(200)#沿着指定相反方向后退200个像素
turtle.done()#done()需要在绘制程序的最后面

绘制窗格:在这里插入图片描述
可以看到箭头依旧向右,因为指定方向为右

  • right(a)函数:向右旋转a角度
  • left(a)函数:向左旋转a角度
import turtle
turtle.setup()
turtle.right(90)#由默认方向向右旋转90度
turtle.fd(200)#绘制200像素
turtle.left(90)#再向左旋转90度
turtle.fd(200)#绘制200像素

turtle.done()#done()需要在绘制程序的最后面

绘制窗格:在这里插入图片描述

  • sethead(a)函数:以默认方向为起始,将当前朝向设置为a角度
import turtle
turtle.setup()
turtle.right(90)
turtle.fd(200)
turtle.left(90)
turtle.fd(200)
turtle.seth(120)
turtle.fd(200)

turtle.done()#done()需要在绘制程序的最后面

绘制窗格在这里插入图片描述
可以看到第三条线角度为:以向右为起始偏转120度。

  • goto()函数:移动到绝对的坐标处
import turtle
turtle.goto(100,100)
turtle.goto(-100,100)
turtle.done()

绘制窗格在这里插入图片描述
可以看到位置是根据绝对坐标进行变换的,始终以屏幕正中心为(0,0)

  • circle(r,e)函数:绘制一个指定半径r和角度e的圆或者弧形
import turtle
turtle.circle(100,200)
turtle.done()

绘制窗格在这里插入图片描述

  • undo()函数:撤销画笔的最后一步动作

  • speed()函数:设置画笔的绘制速度,参数为0-10之间。

  • 绘制八边形

import turtle

for i in range(8):
   turtle.seth(i*360/8)
   turtle.fd(100)
turtle.done()

绘制窗格在这里插入图片描述
2.3.3 画笔状态函数
在这里插入图片描述

  • penup()函数:提起画笔,即使位置移动也不会绘制线条
  • pendown()函数:放下画笔,继续绘制。
import turtle
turtle.penup()#提起画笔
turtle.fd(200)#前进200像素
turtle.pendown()#放下画笔
turtle.circle(100,360)#画一个圆
turtle.done()

绘制窗格在这里插入图片描述

  • pensize(width)函数:设置画笔的粗细为指定大小
  • color()函数:设置画笔的颜色,可以使用英文单词或者十六进制
import turtle
turtle.fd(100)#默认画笔size为1,前进100像素
turtle.pensize(5)#修改size为5
turtle.color("#B80000")#修改颜色
turtle.circle(100,360)#绘制圆
turtle.done()

绘制窗格在这里插入图片描述

  • begin_fill()函数和end_fill()函数需要配合使用,填充前调用begin_fill(),填充后调用end_fill()才会完成填充
  • filling()函数用于返回填充状态,True为填充,False为未填充。需要在end_fill()前使用才可获得是否成功填充的状态
import turtle
turtle.begin_fill()#开始填充
turtle.color("#B80000")#颜色选择,若不选默认填充黑色
turtle.circle(100,360)#绘制圆
print(turtle.filling())#输出填充状态
turtle.end_fill()#完成填充
turtle.done()

绘制窗格
在这里插入图片描述

  • clear()函数:清空当前窗口,但不改变画笔位置
  • reset()函数:清空当前窗口,并且位置回到默认值
  • screensize()函数:设置画布的长和宽
    可以结合setup()函数使用,当画布大小大于窗口大小时,会自动出现滚动条
import turtle
turtle.setup(500,500)
turtle.screensize(1000,1000)

在这里插入图片描述

  • hideturtle()函数:可以隐藏小箭头
  • showturtle()函数:可以显示小箭头
import turtle
turtle.setup(500,500)
turtle.screensize(1000,1000)
turtle.hideturtle()#隐藏小箭头
turtle.circle(100,360)
turtle.done()

在这里插入图片描述
2.3.4 练习

  • 丘比特之心
import turtle
def Peach_heart():#绘制心形
    turtle.left(135)
    turtle.fd(100)
    turtle.right(180)
    turtle.circle(50,-180)
    turtle.left(90)
    turtle.circle(50,-180)
    turtle.right(180)
    turtle.fd(100)
turtle.begin_fill()#调用填充函数 
turtle.color('red')#颜色为红色
Peach_heart()#调用心形函数
turtle.penup()#提起画笔
turtle.goto(100,30)#位置定位为100,30处
turtle.pendown()#放下画笔
turtle.seth(0)#初始角度调整为0 
Peach_heart()#再次调用心形函数
turtle.end_fill()#完成填充
turtle.penup()#提起画笔
turtle.goto(-100,30)
turtle.pendown()
turtle.seth(25)#角度调整为25
turtle.pensize(5)#画笔size调整
turtle.color('black')
turtle.fd(350)#绘制直线
turtle.done()

绘制窗格在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/71180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)

一、题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标一定代表国际象…

少走弯路 → PlantUML网站推荐

PlantUML官网 Real World PlantUML 建议画图前从这里拷贝模板 PlantUML在线编辑 虽然简洁但是比官网好用的多 PlantUML 在线编辑器画面美观推荐使用 文章目录类图类图 一直都没搞懂 关联,依赖,组合,聚合的关系,看了视频稍微…

hdfs-over-ftp使用说明

hdfs-over-ftp使用说明 一、介绍 hdfs-over-ftp可以将hdfs文件系统通过ftp服务方式暴露出来,可以通过ftp客户端下载和上传hadoop文件。 二、编译及安装配置 原作者很久不更新了https://github.com/iponweb/hdfs-over-ftp 如果要支持hadoop2、hadoop3需要自己编译;可…

阿里妈妈展示广告召回之多场景建模算法

丨目录: 摘要 背景 方法 实验分析 总结 参考文献1. 摘要工业推荐系统通常拥有多个业务场景,并需要同时为这些场景提供推荐服务。在召回阶段,从大量商品库中选出的个高质量商品需要针对不同场景进行相应调整。以阿里妈妈展示广告为例&#xf…

认识 MySQL数据库和Redis缓存的数据一致性问题

文章目录1. 什么是数据的一致性2. 数据不一致情况及应对策略3. 数据一致性中需要注意的其他问题有哪些?1. 什么是数据的一致性 “数据一致”一般指的是:缓存中有数据,缓存的数据值 数据库中的值。 但根据缓存中是有数据为依据,…

微信外卖点餐小程序毕业设计,微信订餐小程序系统设计与实现,微信小程序毕业设计论文怎么写毕设源码开题报告需求分析怎么做

基于微信小程序的毕业设计题目(5)php点菜外卖小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板) 项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序外卖点菜系统,前台用户使用小程序,后台管理使用基PHPMySql的B…

【AI入门】利用Paddle实现简单的数字识别

梳理逻辑 整个流程 准备好Paddle的环境准备好训练样本设计模型(定义模型)训练模型模型测试 1、准备好环境 #加载飞桨和相关类库 import paddle from paddle.nn import Linear import paddle.nn.functional as F import os import numpy as np import matplotlib.pyplot as plt…

Kafka 为什么那么快?

有人说:他曾在一台配置较好的机子上对 Kafka 进行性能压测,压测结果是 Kafka 单个节点的极限处理能力接近每秒 2000万 条消息,吞吐量达到每秒 600MB。 那 Kafka 为什么这么快?如何做到这个高的性能? 本篇文章主要从这…

梯度消失、梯度爆炸和梯度裁剪(Gradient Clipping)

消失梯度 网络训练过程中,如果每层网络的梯度都小于 1,各层梯度的偏导数会与后面层 传递而来的梯度相乘得到本层的梯度,并向前一层传递。该过程循环进行,最后导 致梯度指数级地减小,这就产生了梯度消失现象。这种情况…

第6季2:H264编码原理与基本概念

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 (1)H264 编码基本原理_ByteSaid的博客-CSDN博客_h264编码原理 (2)H264 编码简介_mydear_11000的博客-CSDN博客 (3)什么是I帧…

鸿蒙3.0应用开发体验

鸿蒙os3.0发布以来,华为官方开始主推etsarkui开发模式,逐渐抛弃java,为以后去安卓化做铺垫,但目前在笔者体验来看,仍需要大力完善,还有很长的路要走! 什么是ets?ts是js的超集&#x…

日志、logback

logback下载步骤: logback官网https://logback.qos.ch/index.html教程http://t.csdn.cn/xSK0I 点击SLF4J API进去,注意看右上角的标题是有变化的,是什么目录下就会显示什么目录,点击下载 然后一样点击右下角的Maven 下载这三个&a…

centos7 基于Dledger搭建rocketmq 5.0.0并集成到微服务(1主2从)

小伙伴们,你们好呀,我是老寇,好久不见啦,甚是想念。 rocketmq和rocketmq-console安装包:https://pan.baidu.com/s/1swrV9ffJnmz4S0mfkuBbIw 提取码:1111 1.准备三台主机 192.168.1.1rocketmq&#xff0…

Verilog语法之generate for、generate if、generate case

0、前言 Verilog-2005中有3个generate 语句可以用来很方便地实现重复赋值和例化(generate for)或根据条件选择性地进行编译(generate if和generate case)等功能。接下来就一起看下这3个语句的应用场景和应用方法吧。 1、generate …

Hotspot垃圾收集器一览

上篇文章我们介绍了如何判断对象是否为垃圾,有垃圾就要清理,清理就需要 垃圾收集器。 垃圾收集器(Garbage Collector)是垃圾收集GC的实现,根据是否分代收集可将垃圾收集器分为两种类型:分代收集和不分代收集。 分代收集 Serial垃…

多线程编程带来的不安全问题

目录 1.观察线程不安全问题 2.出现线程不安全问题原因 2.1 根本原因 2.2 代码结构 2.3 原子性 2.4 内存可见性问题 2.5指令重排序 3.通过原子性解决线程安全问题 4.synchronized的使用方法 4.1 修饰方法 4.2 修饰代码块 1.观察线程不安全问题 如果多线程环境下代码…

餐饮企业提升用户价值,从基于点单链路的精细化运营开始

近几年,餐饮业的经营增长面临着巨大挑战,在这种情况下,餐饮企业如何提升用户价值,提高多风险下持续增长的动力呢?神策数据杨丽月聚焦用户运营,围绕“一条链路,四个指标”,跟大家分享…

C# 标签式导航

一 标签式导航 使用TabControl控件,将多个页面结合起来,每个标签关联一个页面。 TabControl 选项卡容器; TabPage选项页; 可以在设计器里添加页面,也可以代码方式添加。 操作演示: ① 选中TabControl; ②…

框架skywalking部署笔记

一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致 记录日志异常,所以最好的方式还是要做日志中心化,另一个问题,原来一个请求在一个进程中的痉挛失败,你可以在日志中巡查…

linux的内存映射(二)

我们先来看幅图: Linux内存管理的最底层是buddy内存管理方案,即伙伴算法,管理伙伴算法我们不做详诉,有兴趣的可以自行学习,我们这里只要知道buddy内存池中只能分配2^n个page的内存,比如1,2,4,8……个pages…