学习Python中turtle模块的基本用法(2:基本绘图函数测试)

news2024/11/29 12:43:52

  个人感觉turtle模块中的绘图函数是按人手拿着画笔一笔一画地画图的思路定义的,这与C#中的GDI+函数、html5中canvas的绘图函数及Tkinter中Canvas的绘图函数的定义思路存在差异,但也能完成后面绝大部分的绘图功能(目前看到的turtle文章及帮助文档里面还没有看到类似drawimage的函数)。
  本文介绍turtle模块中最常用的绘图函数,并结合参考文献测试绘图函数的使用方式。

序号函数名说明
1turtle.bgcolor设置窗体背景色
2turtle.screensize设置窗体大小
3turtle.penup提笔,笔抬起来之后后续就不会再绘图,turtle.pu、turtle.up与本函数作用相同
4turtle.pendown落笔,笔落后后续就开始绘图,turtle.pd、turtle.down与本函数作用相同
5turtle.pensize设置线宽,turtle.width与本函数作用相同
6turtle.pencolor设置线条颜色
7turtle.fillcolor设置区域填充颜色
8turtle.begin_fill在绘制要填充的形状之前调用
9turtle.end_fill以填充颜色填充前一begin_fill之后绘制的形状。自相交多边形或多个形状间的重叠区域是否填充取决于操作系统的图形引擎、重叠的类型以及重叠的层数
10turtle.write绘制文本,可以指定对齐方式及字体信息,详见参考文献1
11turtle.hideturtle隐藏绘图箭头或海龟(本人电脑上显示的是箭头),turtle.ht与本函数作用相同
12turtle.showturtle显示绘图箭头或海龟 ,turtle.st与本函数作用相同
13turtle.forward向前移动指定距离,penup时是移动,pendown时则是绘图,turtle.fd与本函数作用相同
14turtle.backward向后移动指定距离,penup时是移动,pendown时则是绘图,turtle.back、turtle.bk与本函数作用相同
15turtle.right向右侧转指定角度,之前调用过degrees函数则输入参数为度数,之前调用过radians则输入参数为弧度,turtle.rt与本函数作用相同
16turtle.left向左侧转指定角度,之前调用过degrees函数则输入参数为度数,之前调用过radians则输入参数为弧度,turtle.lt与本函数作用相同
17turtle.goto移动到指定坐标处,penup时是移动,pendown时则是绘图,turtle.setpos、turtle.setposition与本函数作用相同
18turtle.speed设置海龟移动的速度为 0…10 表示的整型数值,速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。
19turtle.position获取海龟当前坐标,turtle.pos与本函数作用相同
20turtle.circle绘制圆形,圆心在海龟左边 radius 个单位

  基于上述函数,结合参考文献进行绘图功能测试。首先测试绘制五星红旗,原始代码来自参考文献2,其绘制了红旗和旗杆,本文测试时去掉了绘制旗杆的代码,并对绘制红旗的代码进行了优化,优化后的代码及运行效果如下所示:

import turtle

def DawStar(startX,startY,lens):
    turtle.penup()
    turtle.goto(startX,startY)
    turtle.pendown()
    turtle.fillcolor("yellow")
    turtle.pencolor("yellow")
    turtle.begin_fill()   
          
    for i in range(1,6):
        turtle.forward(lens) 
        turtle.right(144)      
          
    turtle.end_fill()

turtle.pencolor("red")
turtle.fillcolor("red") 
turtle.begin_fill()         
turtle.penup()
turtle.goto(-60,0)
turtle.pendown()
turtle.goto(-60,160)
turtle.goto(240,160)
turtle.goto(240,0)
turtle.goto(-60,0)
turtle.end_fill()

DawStar(-50,110,45)
DawStar(-10,145,20)
DawStar(10,120,20)
DawStar(10,95,20)
DawStar(-10,70,20)
turtle.hideturtle()

在这里插入图片描述
  第二个测试程序绘制的是从参考文献3中找到的简单的盘类零件主视图(原始图如下图所示),主要是由多个圆组成,绘图代码及运行效果如下所示(暂时不清楚虚线怎么画,绘图时全都画成了实线):
在这里插入图片描述

import turtle

def DrawCircle(startX,startY,width,radius):
    turtle.penup()
    turtle.goto(startX,startY)
    turtle.pensize(width)
    turtle.pendown()
    turtle.right(90)
    turtle.circle(radius)
    turtle.left(90)

turtle.pensize(1)
turtle.penup()
turtle.backward(130)
turtle.pendown()
turtle.forward(260)
turtle.penup()
turtle.goto(0,130)
turtle.pendown()
turtle.goto(0,-130)
turtle.penup()
turtle.goto(0,0)

DrawCircle(-50,0,3,50)
DrawCircle(-60,0,3,60)
DrawCircle(-70,0,3,70)
DrawCircle(-90,0,1,90)
DrawCircle(-110,0,3,110)

DrawCircle(-100,0,3,10)
DrawCircle(-10,-90,3,10)
DrawCircle(80,0,3,10)
DrawCircle(-10,90,3,10)

turtle.hideturtle()

在这里插入图片描述

参考文献:
[1]https://docs.python.org/zh-cn/3/library/turtle.html
[2]https://blog.csdn.net/A15622180434/article/details/122700075
[3]https://max.book118.com/html/2016/0803/50160473.shtm

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

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

相关文章

安装OpenGL

提示错误信息: (base) C:\Users\Tina\PycharmProjects\FunnyToys-main>conda install opengl Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve. Collecting…

python 栈空间不足异常 Process finished with exit code: -1073741571

问题现象 在pycharm使用debug模式调试代码时,异常退出,且错误码为-1073741571。除了错误码外,并没有看到其它报错。 分析 查阅资料: Process finished with exit code -1073741571 (0xC00000FD) when trying to implement ab…

AxureRP9的新特性介绍和技巧分享

AxureRP自去年8月第一个测试版本发布以来,已经一年多了,官方版本已经发布了近半年,但这个版本的用户声誉是褒贬不一的。许多用户反馈了他们对新版本的喜欢和肯定,但一些老用户仍然不愿意接受它,甚至保持抵制。 根据我…

【Hack The Box】linux练习-- Tabby

HTB 学习笔记 【Hack The Box】linux练习-- Tabby 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月22日🌴 &#x1f36…

【数据结构】基础:二叉树

【数据结构】基础:二叉树基础 摘要:本文将会介绍二叉树的基础内容,首先引入树的概念,了解树的基本概念与性质,再对二叉树的概念和性质进行分析,最后对其方法进行实现,最重要的是理解对于二叉树方…

世界65个国家贸易开放度数据 2005-2019年

一、数据介绍 数据名称:UNtrade数据库 数据年份:2005-2019年 数据范围:世界65个国家 数据来源:各地方统计局 部分数据如下: 二、参考文献 用途:研究人民币实际汇率与贸易差额之间的关系等。 [1]卢向…

R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究

数据集中的Usenet公告板包括新汽车,体育和密码学等主题。最近我们被客户要求撰写关于主题建模的研究报告,包括一些图形和统计输出。我们对20个Usenet公告板的20,000条消息进行分析。 相关视频:文本挖掘:主题模型(LDA&a…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.1 记录系统访客独立IP访问次数案例介绍

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.1 记录系统访客独立IP访问次数案例介绍2.1.1 介绍2.1.2 需求…

SpringCloud 组件Gateway服务网关【断言工厂过滤器工厂】

目录 1:断言工厂 2:过滤器工厂 2.1:路由过滤器的种类 2.2:请求头过滤器 2.3:默认过滤器 2.4:总结 1:断言工厂 路由断言工厂Route Predicate Factory 路由配置包括: 1. 路由…

C++_串口编程_官方示例:监视通信事件

这是微软官方的一个例子,这个例子中,如果不做修改,那么他是可以异步运行的,会出现一个错误:官方也说了一下,但是不太好懂,我拷贝过来放在这里,作为参考。 如果无法立即完成重叠的操作…

1_MyBatis入门

原生JDBC实现CURD的问题 1 编码繁琐 2 需要我们自己将结果集映射成对象 3 性能不太好 连接池 缓存 4 SQL语句和java代码的耦合度特别高 5 … … MyBatis 本是Apache的一个开源项目iBatis, 2010年这个项目由Apache Software Foundation 迁移到了Google Code,且改名为…

python学习笔记(10)

目录 第八章 函数 1.模块化程序设计(模块化---封装、复用、可替代) 2.定义函数 3.函数调用 4.return语句 5.函数参数 6.变量作用域 7.函数的递归调用 8.匿名函数 9.迭代器 10.生成器 11.装饰器 第八章 函数 1.模块化程序设计(…

【线性表】—不带头单向非循环链表的增删查改

小菜坤日常上传gitee代码:https://gitee.com/qi-dunyan(所有的原码都放在了我上面的gitee仓库里) 数据结构知识点存放在专栏【数据结构】后续会持续更新 ❤❤❤ 个人简介:双一流非科班的一名小白,期待与各位大佬一起努…

dns网络服务器未响应是什么原因(如果各自方法都尝试后无法使用,请尝试重启猫)

事件起因:周六晚上,看法国对丹麦世界杯,突然网页浏览器无法工作。 1.然后尝试修改dns路由修改为114.114.114.114,又还原system32/driver/hosts仍然无法使用 2.查看是否有浏览器代理,查询无 3.查看是否有可疑进程&…

游戏开发24课 cocoscreator scrollview优化

分享一个 ScrollView 优化组件 增加一个 在线演示地址 显得高大上一点 image.png32762116 263 KB 目前支持的功能 水平/垂直滑动 可变尺寸动态更新 平滑滚动到底部 Grid 正序排列、倒序排列 无限循环滚动 单向、双向 下拉刷新 (只是这么叫 实际上就是两种类型…

深度学习第四课——卷积神经网络(week 2)

目录 二、深度卷积网路 2.1 经典网络结构 2.1.1 LeNet - 5 2.1.2 AlexNet 2.1.3 VGG - 16 2.2 残差网络(ResNets - Residual Networks) 2.3 残差网络为什么有用 2.4 网络中的网络及11卷积 2.5 Inception网络 2.5.1 介绍 2.5.2 应用 2.6 使用…

24. [Python GUI] PyQt5中的模型与视图框架-表格部件QTableWidget

PyQt5的表格部件QTableWidget QTableWidget 类继承自 QTableView,该类是一个由 Qt 实现的标准的表格部件,该类的数据项由 QTableWidgetItem 类管理。 当前单元格(或当前项目)与当前索引或当前选择是相同的,即可以同时选择多个单元格&#x…

Spark 3.0 - 7.LR 多分类实现影评预测电影评分与指标评测

目录 一.引言 二.LR 多分类分析 三.LR 多分类实战 1.数据准备 Comment -> RDD -> DF 2.数据处理 JieBaTokenizer -> HashingVector 3.模型训练 LR 4.模型评估 Metrics 5.人工校验 DIY 四.总结 一.引言 Spark 3.0 - 5.ML Pipeline 实战之电影影评情感分析 通…

浅析数据采集工具Flume

title: Flume系列 第一章 Flume基础理论 1.1 数据收集工具产生背景 Hadoop 业务的一般整体开发流程: 任何完整的大数据平台,一般都会包括以下的基本处理过程: 数据采集 数据 ETL 数据存储 数据计算/分析 数据展现 其中,数据…

Nacos注册中心和服务方式

目录 一、服务治理介绍 常见的注册中心 二、Nacos注册中心介绍 三、运用Nacos搭建环境 四、DiscoveryClient实现负载均衡 五、Ribbon实现负载均衡 六、基于Feign实现服务调用 七、Feign传参 一、服务治理介绍 通过上一章的操作,我们已经可以实现微服务之间的调…