【Python模块】图形化编程模块-turtle

news2024/11/27 0:28:34

Turtle,也称海龟渲染器,是 Python 内置的图形化模块,它使用 tkinter 实现基本图形界面,因此 当前使用的 Python 环境需要支持 tkinter。

Turtle 提供了面向对象和面向过程两种形式的海龟绘图基本组件。使用它可以轻松的实现图形的绘制,它和各种三维软件都有着良好的结合,功能强大,使用方便,也成为了 Python 兴趣编程的选择。

图形绘制的原理也很简单,通过小海龟在画布上移动留下的轨迹表示画出的图形。因此,使用海龟绘图可以编写重复执行简单动作的程序,从而画出精细复杂的形状。

Turtle 模块常用的 API,参考如下:

如果我们能熟练掌握这些 API 的含义和使用,基本可以天马行空般的画各种东西了。

举个例子,画个病毒模样的图形:

# 颜色设置:参数1为画笔颜色,参数2为填充色
turtle.color('red', 'blue')
# 开始填充
turtle.begin_fill()
# 循环的前进200,再左转170,如果距画笔位置<1,则结束循环
while True:
    turtle.forward(200)
    turtle.left(170)
    if abs(turtle.pos()) < 1:
        break
# 结束填充
turtle.end_fill()
turtle.done()

执行上述代码后,最终绘出的图形效果如下:

再画个更简单的奥运五环,思路就是重复的画五个圆。当然,要先写个重复画圆的方法,如下:

def draw_circle(x, y, c):
    # 抬起画笔
    turtle.pu()
    # 画圆的开始位置
    turtle.goto(x, y)
    # 放下画笔
    turtle.pd()
    turtle.color(c)
    turtle.circle(40, 360)

接着,设置不同的圆心坐标和圆环颜色就可以了,如下:

# 设置画笔尺寸
turtle.pensize(3)
# 画五个圆环
draw_circle(0, 0, 'blue')
draw_circle(60, 0, 'black')
draw_circle(120, 0, 'red')
draw_circle(90, -30, 'green')
draw_circle(30, -30, 'yellow')
# 结束
turtle.done()

执行上述代码后,最终绘出的图形效果如下:

现在应该能体味到兴趣编程的含义了吧,只要控制好"这只小乌龟"的行走轨迹,就能画出任何的图形,而且这种面向过程的编程也简单易懂。

下面来个稍微复杂点的,画出国旗的图案,思路也不难,就是要绘制红色背景区域,五颗黄色五角星就行。

导入依赖模块:

from turtle import *
import time

第一步,画红色背景区域

def draw_bg():
    speed(10)  # 控制画笔速度
    up()  # 抬笔
    goto(-200, 200)  # 跳到指定位置
    down()  # 落笔
    color("red", "red")  # 设置线条色和填充色
    begin_fill()
    forward(480)
    right(90)
    forward(320)
    left(90)
    backward(480)
    right(90)
    backward(320)
    end_fill()

第二步,画大五角星

def draw_big_star():
    up()
    forward(64)
    left(90)
    forward(32)
    down()
    # 画大五角星
    a = 96
    color("yellow", "yellow")
    begin_fill()
    for i in range(1, 6):
        forward(a)
        right(144)
        speed(2)
    end_fill()

第三步,画第一颗小五角星

def draw_first_small_star():
    up()
    forward(96)
    left(53)
    forward(36)
    # 第一个小五角星
    a = 32
    begin_fill()
    for i in range(1, 6):
        forward(a)
        right(144)
        speed(5)
    end_fill()

第四步,画第二颗小五角星

def draw_second_small_star():
    up()
    right(80)
    forward(42)
    left(55)

    # 第二个小五角星
    a = 32
    begin_fill()
    for i in range(1, 6):
        forward(a)
        right(144)
        speed(5)
    end_fill()

第五步,画第三颗小五角星

def draw_third_small_star():
    up()
    right(96)
    forward(32)

    # 第三个小五角星
    a = 32
    begin_fill()
    for i in range(1, 6):
        forward(a)
        right(144)
        speed(5)
    end_fill()

第六步,画第四颗小五角星

def draw_four_small_star():
    up()
    right(54)
    forward(45)
    right(30)

    # 最后一个小五角星
    a = 32
    begin_fill()
    for i in range(1, 6):
        forward(a)
        right(144)
        speed(2)
    end_fill()

最后,执行测试

if __name__ == '__main__':
    draw_bg()
    draw_big_star()
    draw_first_small_star()
    draw_second_small_star()
    draw_third_small_star()
    draw_four_small_star()
    ht()
    time.sleep(10)

画出来的最终效果,如下所示:

当然,画各种感兴趣的卡通人物更不在话下了,比如多啦爱梦、小猪佩奇、皮卡丘等。

多啦爱梦 ----> 如下:

皮卡丘 ----> 如下:

如果需要这些代码,后面会上传到我的 Github 上~​​​​​​​

参考资料:

  • turtle --- 海龟绘图 — Python 3.11.0 文档

【人生苦短,学习Python!Python模块系列将持续更新和记录......】

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

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

相关文章

初探Golang语法巩固复习

最近在家&#xff0c;重新拾起Go语言&#xff0c;搭建环境可参考之前博客【初探Golang语言之环境搭建】&#xff0c;本文是基本语法熟悉与练习&#xff0c;方便备查。 判断语句 if && switch if 通过指定一个或多个条件&#xff0c;并通过测试条件是否为true来决定是…

[附源码]计算机毕业设计springboot驾校预约管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

xcode swift 单元测试 test

XCTest是苹果官方的测试框架&#xff0c;是基于OCUnit的传统测试框架&#xff0c;测试编写起来非常简单。 测试案例一 创建一个单元测试 func testExample() throws {let personID:String "0123456789"let count personID.countXCTAssert(count < 10, "I…

aPaaS是什么(aPaaS平台和IPaaS的区别是啥?大白话解释)

依题&#xff1a;aPaaS是什么&#xff1f;aPaaS与iPaaS二者之间的区别在哪&#xff1f;要想了解区别&#xff0c;首先得搞清概念&#xff0c;不然就是在耍流氓&#xff01;下面本人就从概念到区别用大白话给你一次性讲清楚。 一、什么是aPaaS&#xff1f; 应用程序平台即服务&…

freeswitch配置SBC的方案

概述 freeswitch 是一款好用的开源软交换平台。 但是&#xff0c;fs不是专为SBC而开发的&#xff0c;所以需要做一些定制化的配置和开发。 本文主要介绍如何利用fs的基本功能配置一个简单的SBC方案&#xff0c;满足一般化需求&#xff0c;如果有定制化的需求需要定制开发。 …

QT简单串口通信终端实现

1.工程文件 工程文件中添加serilport QT serialport 2.主程序 主程序文件main.cpp #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } …

xray长亭是自动化Web漏洞扫描神器

xray长亭一款完善的安全评估工具&#xff0c;支持常见 web 安全问题扫描和自定义 。 xray 是一款功能强大的安全评估工具&#xff0c;由多名经验丰富的一线安全从业者呕心打造而成&#xff0c;主要特性有: 检测速度快。发包速度快; 漏洞检测算法效率高。支持范围广。大至 OWAS…

Python error:Compressed file ended before the end-of-stream marker was reached

功能描述 在做http协议处理时&#xff0c;经常遇到gzip格式的数据需要进行还原解压缩处理。 解压缩用到的Python库为 import gzip 报错 unpack_gzip error:Compressed file ended before the end-of-stream marker was reached 压缩文件在到达流结束标记之前结束 原因 该…

上海亚商投顾:沪指创反弹新高 房地产板块掀涨停潮

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪三大股指今日窄幅震荡&#xff0c;最终尾盘小幅收红。房地产板块午后跳水&#xff0c;首开股份跌停&#xff0c;粤宏…

遥感指数应用汇编

引言 现在遥感应用领域&#xff0c;尤其是农业遥感、土地覆盖、矿物识别等等地物精细识别探测任务中&#xff0c;遥感指数已经如日中天。它们的共同特点都是采用了比值运算和归一化(normalization)处理。因此数值范围介于{-1&#xff0c;1}之间。由于进行了比值计算&#xff0c…

虹科活动 | SWCF 2022卫星通信与仿真测试线上研讨会倒计时,快来报名吧!

您是否在因线下论坛的地点限制而错失技术干货分享&#xff1f;您是否因时间安排而无法亲临现场与行业专家交流&#xff1f;虹科举办全新线上论坛SWCF&#xff0c;与行业专家一起为您带来最新热点话题讨论与技术干货分享&#xff01; 什么是SWCF 虹科每年将开展卫星与无线通信…

架构重构技巧

架构重构定义 代码重构 定义 对软件代码做任何改变以增加可读性或者简化结构而不影响输出结果 目的 增加可读性、增加可维护性、可扩展性 关键点 不影响输出不修正错误不增加新的功能性 架构重构 定义 通过调整系统结构&#xff08;Rank、Role、Relation、Rule&#…

Java8--Stream的各种用法(二):collect、Collectors

Collectors中的方法&#xff1a; 其中我们常用的是前三个&#xff1a;将流中的元素放到集合中、分组、toMap。 下面我们逐个介绍这些方法的使用. 基础类&#xff1a; Student public class Student {private Integer id;private String name;private String className;priva…

Linux21 --- 计算机网络基础概论(网络基本概念、网络分层模型、网络应用程序通信流程)

一、网络基本概念 1、网络 网络是由若干结点和连接这些结点的链路组成&#xff0c;网络中的结点可以是计算机&#xff0c;交换机、 路由器等设备。 网络设备有&#xff1a;交换机、路由器、集线器 传输介质有&#xff1a;双绞线、同轴电缆、光纤 下图是一个简单的网络示意图…

应急启动电源+充气一体式方案设计

汽车应急启动电源是为驾车出行的爱车人士和商务人士所开发出来的一款多功能便携式移动电源。它的特色功能是用于汽车亏电或者其他原因无法启动汽车的时候能启动汽车。同时将充气泵与应急电源、户外照明等功能结合起来&#xff0c;是户外出行必备的产品之一。 汽车应急启动电源应…

springboot源码编译报错Unable to start the daemon process

官方网址&#xff1a;GitHub - spring-projects/spring-boot: Spring Boot springboot版本&#xff1a; 报错截图&#xff1a; 报错代码&#xff1a; Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For examp…

jsp196ssm毕业设计选题管理系统hsg4361B6

本系统选用Windows作为服务器端的操作系统&#xff0c;开发语言选用Java&#xff0c;数据库选用Mysql&#xff0c;使用mybatis数据库连接技术&#xff0c;使用Myeclipse作为系统应用程序的开发工具&#xff0c;Web服务器选用Tomcat版本。 下面分别简单阐述一下这几个功能模块需…

pytest配置文件合集(一)-----------conftest.py应用

配置文件&#xff1a; 配置文件一般存在项目的根目录下&#xff0c;官方文档介绍了四种配置文件&#xff0c;每种文件有各自的用处。 pytest.ini&#xff1a;主配置文件&#xff0c;最常用&#xff0c;优先匹配配置项 tox.ini &#xff1a;可以理解为pytest.ini的另一种写法&…

接口测试方法论——WebSocket一点通

WebSocket是HTML5提供的一种能在单个TCP连接上进行全双工通信的协议。前面介绍过&#xff0c;HTTP是一种无状态、无连接、单向的应用层协议。 HTTP采用了请求/响应模型&#xff1a;通信请求只能由客户端发起&#xff0c;服务器负责对请求做出应答处理。但这会出现一个很严重的…

【Java集合】List接口常用方法及实现子类

文章目录List接口> List 接口的常用方法> List的三种遍历方式> List 排序练习※ ArrayList 使用注意事项※ ArrayList 底层结构※ Vector 底层结构※ LinkedList 底层结构 &#xff08;双向链表和增删改查案例&#xff09;> ArrayList 和 LinkedList 比较List接口 …