绘图窗口大小与位置
位置坐标与移动
方向与角度
简单案例效果
绘制正多边形
设置颜色
使用turtle绘图时,离不开颜色的支持,颜色既可以通过一些常见的颜色单词表示,如red、green、blue等,也可以通过代表RGB三原色的元组表示。在 turtle 库中提供了多个方法用于设置颜色,包括设置颜色模式、设置画笔颜色、设置填充颜色等。
画笔的一些设置
尝试实现上图所示效果,界面上有两个大小和样式一样的五角星,只是位置不同,五角星边长为80,边框颜色为红色,填充色为蓝色,边框粗细为3,绘制结束后不显示指针。(提示:两个五角星之间存在一定的间距,需要移动画笔)
import turtle
turtle.color("red", "blue")
turtle.pensize(3) # 设置画笔粗细,单位为像素
turtle.begin_fill() # 开始填充
for i in range(5): # 执行 5 次循环,绘制五角星
turtle.fd(80) # 向前80
turtle.rt(144) # 右转 144度
turtle.penup() # 提前画笔
turtle.goto(-100, 0) # 移动到一个新的位置
turtle.pendown() # 放下画笔
turtle.end_fill() # 结束填充
turtle.begin_fill() # 开始填充
for i in range(5): # 执行 5 次循环
turtle.fd(80) # 向前200
turtle.rt(144) # 右转 144度
turtle.end_fill() # 结束填充
turtle.hideturtle() # 隐藏指针
turtle.done() # 完成绘图,停留在界面,没有该方法会直接退出
一些基本形状绘制
import turtle
turtle.pensize(3) # 设置画笔宽度为3
turtle.color('blue', 'red') # 设置画笔颜色和填充色
turtle.begin_fill() # 开始填充
turtle.forward(-400) # 反方向移动400像素
for i in range(3, 10):
turtle.circle(40, steps=i) # 画圆内切多边形
turtle.forward(100) # 前进100像素
turtle.circle(40) # 画圆
turtle.end_fill() # 结束填充海龟
turtle.hideturtle() # 隐藏海龟
turtle.done() # 结束
其他一些实用方法
turtle.write(文本内容, align=“left”, font=(“Arial”, 8, “normal”)) :绘制字符串,align参数用于设置对其方式,font参数用于设置字体,包括字体名称、字体大小、字体样式,align参数和font参数都有默认值;
turtle.position()(别名turtle.pos):返回当前的位置距离原点的距离。
turtle.speed(速度):设置画笔移动速度,取值范围为[0,10]整数,数字越大越快;
turtle.tracer(False):关闭动画,默认会有动画效果。
import turtle
import time
turtle.pencolor("red") # 设置画笔颜色
turtle.hideturtle() # 隐藏指针
turtle.tracer(False) # 关闭动画,否则会看到明显的刷新效果
while True: # 死循环
s_time = time.strftime("%Y-%m-%d %H:%M:%S") # 时间格式化字符串
turtle.write(s_time, align="center", font=("Arial", 24, "italic")) # 绘制字符串
time.sleep(1) # 休眠 1 秒
turtle.clear() # 清空已有内容
turtle.done() # 绘制完成
import turtle
turtle.pensize(2) # 设置画笔大小
width = 15 # 每个单元格的边长
turtle.speed("fastest") # 设置画笔速度
for i in range(0, 19): # 循环画横线
turtle.penup() # 抬起画笔
turtle.goto(0, i * width) # 调整位置
turtle.pendown() # 按下画笔
turtle.forward(18 * width) # 画线
turtle.left(90) # 左转90度
for i in range(0, 19): # 循环画竖线
turtle.penup() # 抬起画笔
turtle.goto(i * width, 0) # 调整位置
turtle.pendown() # 按下画笔
turtle.forward(18 * width) # 画线
turtle.hideturtle() # 隐藏指针
turtle.done() # 绘制完成,停留在界面上
绘制下图所示太阳花效果,思路:不断画等长的线段,然后每次画完后偏移一定的角度,直到有线段重合。(偏移的角度不同,最终的效果也会不同)
import turtle
turtle.color('red', 'yellow') # 设置画笔颜色和填充颜色
turtle.begin_fill() # 开始填充图形
turtle.pensize(2) # 设置画笔大小
turtle.speed("normal") # 设置绘画速度
while True: # 做循环
turtle.forward(200) # 画笔前进200个像素
turtle.left(170) # 左转170度
if abs(turtle.pos()) < 1: # 判断画笔是否回到起点
break
turtle.end_fill() # 结束填充图形
turtle.hideturtle() # 隐藏画笔指针
turtle.done() # 完成绘画
绘制下方左图所示心形效果,心形绘制原理如下方右图图所示,心形大致由两条线段以及两个半圆弧组成,线段的长度刚好为半圆弧的直径,在绘制过程中注意方向的变化。
import turtle
radius = 80
turtle.color("red", "pink") # 设置画笔颜色和填充色
turtle.pensize(2) # 设置画笔大小
turtle.begin_fill() # 开始填充
turtle.left(45) # 左转45度
turtle.fd(2 * radius) # 前进
turtle.circle(radius, 180) # 画半圆
turtle.right(90) # 右转90度
turtle.circle(radius, 180) # 画半圆
turtle.fd(2 * radius) # 前进200像素
turtle.end_fill() # 结束填充
turtle.hideturtle() # 隐藏指针
turtle.done() # 结束,停留在当前界面
绘制如图所示阴阳八卦图效果,分析:该图主要是由一些圆弧组成,核心是画圆和圆弧,关键是要把握方向,从效果图来看,这是一个对称的图,所以只要画出了左半部分,右半部分只要改一下方向和位置即可。左半部分由两部分组成:黑色填充和白色小圆,黑色填充部分由三部分线条围成:小圆半圆弧、大圆半圆弧、小圆半圆弧。代码参考如下。
import turtle
def fill_half(left=1): # 绘制半个填充部分
turtle.home() # 回到初始状态
turtle.begin_fill() # 开始填充黑色
turtle.circle(radius/2, 180) # 画小半圆
turtle.circle(radius, left * 180) # 画大半圆
turtle.circle(radius/2, -180) # 画小半圆
turtle.end_fill() # 结束填充
def draw_small_circle(up=1): # 绘制中间的小圆
turtle.home() # 回到初始状态
turtle.begin_fill() # 开始填充黑色
turtle.penup() # 抬起画笔
turtle.sety(up * 0.35 * radius) # 设置 y 轴坐标
turtle.pendown() # 放下画笔
turtle.circle(up * 0.15 * radius) # 画圆,上下部分方向不同
turtle.end_fill() # 结束填充
turtle.hideturtle() # 隐藏指针
radius = 200 # 大圆的半径
turtle.width(3) # 画笔粗细
turtle.speed("fast") # 设置画笔速度
turtle.color("black") # 画笔和填充色都为黑色
fill_half(left=1) # 绘制左半部分填充
turtle.color("white") # 画笔和填充色都为白色
draw_small_circle(up=1) # 绘制左半部分中的圆
turtle.color("black", "white") # 画笔和填充色都为黑色
fill_half(left=-1) # 绘制下半部分填充
turtle.color("black") # 画笔和填充色都为黑色
draw_small_circle(up=-1) # 绘制下半部分中的圆
turtle.done() # 绘画结束,停留在当前界面
绘制如图所示七彩雪花效果。分析:雪花颜色随机生成,雪花大小随机生成,雪花位置随机生成,单个雪花的形状随机生成。(提示:每个雪花由若干条线段交叉组成)
import turtle
import random
width = 800 # 窗体宽度
height = 600 # 窗体高度
num = 100 # 雪花数
turtle.setup(width, height) # 窗口大小宽度800像素,高度600像素
turtle.tracer(False) # 关闭动画,显示结果更快
turtle.bgcolor("black") # 设置背景颜色为黑色
turtle.hideturtle() # 隐藏指针
turtle.pensize(2) # 设置画笔大小
for i in range(num): # 循环绘制每一个雪花
r, g, b = random.random(), random.random(), random.random() # 随机生成颜色
turtle.pencolor(r, g, b) # 设置画笔颜色
turtle.penup() # 提起画笔,需要移动位置
turtle.setx(random.randint(-width // 2, width // 2)) # 设置 x 坐标位置
turtle.sety(random.randint(-height // 2, height // 2)) # 设置 y 坐标位置
turtle.pendown() # 按下画笔,准备绘画
lines = random.randint(6, 12) # 随机生成雪花的线条数
snow_size = random.randint(8, 16) # 随机生成线条的长度
for j in range(lines): # 循环画线条
turtle.forward(snow_size) # 画线条
turtle.backward(snow_size) # 回到原位置
turtle.right(360 / lines) # 改变角度,线条均匀分开
turtle.done() # 绘画完成,停留在当前页面
3D打印技术是增材制造技术,它利用计算机将需打印的物体3D模型切成一系列一定厚度的“薄片”,3D打印机自下而上地制造出每一层“薄片”,最后叠加成形出三维的实体物件。
Python有许多内置函数,共有66个。以下是这些内置函数的详细解释和示例代码
本文对 Python 中的函数式编程技术进行了简单的入门介绍。
latexify是用于生成 LaTeX 数学公式的 Python 库。LaTeX 是一种基于 ΤΕΧ 的排版系统,对于展示复杂的数学公式表现极为出色。
在过去,如果你想要开发Android应用,你需要掌握Java或者Kotlin等编程语言,但是现在,Python也可以用来开发Android应用了。
Thonny是一款免费的、开源的、易于使用的编程语言,旨在为初学者提供简单易用的编程环境。 Thonny的语法简洁易懂,同时还支持自动补全和语法高亮,使得编程变得更加便捷。