海龟绘图
Python编程代码学累了就来看看小海龟吧。
要使用到海龟绘图,我们首先需要导入一个模块
import turtle
这个模块已经被Python系统自带,无需我们额外安装。
将模块导入后就可以进行绘图的基本操作了。
首先先创建一个画板:
turtle.setup(500,500) #创建一个500*500的画板
例如,画一条直线,以及将画笔向左向右转多少度:
turtle.forward(100)
turtle.left(90)
turtle.right(90)
运用这两个代码,我们可以简单的绘制一个五角星:
import turtle
# 设置画笔颜色和填充颜色
turtle.color("red")
# 绘制五角星
for i in range(5):
turtle.forward(200)
turtle.right(144)
#隐藏画笔
turtle.hideturtle()
# 保持窗口显示
turtle.done()
如此,运用以下这些基本的函数就可以绘制一个笑脸啦;
画笔的属性:
turtle.pensize() #设置画笔的宽度
turtle.pencolor(color) #(颜色的英文,字母用小写),如"green", “red”
turtle.speed(speed) #设置画笔移动速度,画笔绘制的速度范围[0.5,10]整数,数字越大越快
画笔运动命令:
turtle.forward(distance) #向当前画笔方向移动distance像素长度
turtle.backward(distance) #向当前画笔相反方向移动distance像素长度
turtle.right(degree) #顺时针移动degree°
turtle.left(degree) #逆时针移动degree°
turtle.up() #提起笔,移动时不绘制图形
turtle.goto(x,y) #将画笔移动到坐标为x,y的位置
turtle.down() #放下笔,移动时绘制图形
turtle.circle(radius,extent) #根据半径radius绘制extent角度的弧形,若无extent参数则画圆,radius为正(负),表示圆心在画笔的左边(右边)画圆,extent参数为正(负)则是逆(顺)时针画圆
turtle.setx( ) #将当前x轴移动到指定位置,y轴不变
turtlr.sety( ) #将当前y轴移动到指定位置,x轴不变
turtle.setheading(angle) #设置当前箭头朝向为angle角度,0-向右,90-向上,180-向左,270-向下
turtle.home() #设置当前画笔位置为原点,朝向东。
turtle.dot(diameter,color) #绘制一个指定直径和颜色的圆点
turtle.setpos(x,y) #机器小乌龟定位到x=,y=
turtle.pos() #获得当前位置
turtle.xcor() #获得X坐标
turtle.ycor() #获得Y坐标
画笔控制命令:
turtle.fillcolor(colorstring) #绘制图形的填充颜色
turtle.color(color1, color2) #同时设置pencolor=color1, fillcolor=color2
turtle.filling() #返回当前是否在填充状态
turtle.begin_fill() #准备开始填充图形
turtle.end_fill() #填充完成
turtle.hideturtle() #隐藏画笔的turtle形状
turtle.showturtle() #显示画笔的turtle形状
全局控制命令:
turtle.clear() #清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset() #清空窗口,重置turtle状态为起始状态
turtle.undo() #撤销上一个turtle动作
turtle.isvisible() #返回当前turtle是否可见
turtle.done() #保持窗口
turtle.exitonclick() #点击后关闭窗口
stmp() #复制当前图形
以上函数均借鉴删改修改至:【Python3:turtle函数库的详细参数汇总 最全 没有之一】作者:Be-real
下面,我们来画一个笑脸;
import turtle
#写名字
turtle.setup(750,750) #创建一个750*750的画板
turtle.speed(9)
turtle.hideturtle() #隐藏画笔
turtle.pensize(2) #画笔尺寸
turtle.pencolor("black") #画笔颜色
turtle.up()
turtle.goto(150,200)
turtle.down()
turtle.write("子轩大魔王",False,'center',font=("宋体",16,"bold")) #写上名字
turtle.bgcolor("white") #画板颜色
turtle.shape("turtle") #将画笔变成小海龟
turtle.up()
turtle.goto(-35,0)
turtle.down()
turtle.showturtle() #显示画笔
turtle.pensize(8)
turtle.pencolor("yellow")
turtle.left(135)
#创建画眼睛的函数
def Yanjing():
for i in range(90):
turtle.forward(1)
turtle.left(1)
if i==89:
turtle.up()
turtle.goto(35, 0)
turtle.down()
turtle.left(180)
for j in range(90):
turtle.forward(1)
turtle.right(1)
turtle.up()
turtle.goto(120,100)
turtle.down()
#画脸
def Lian():
for i in range(380):
turtle.forward(3)
turtle.right(1)
turtle.up()
turtle.goto(-72,-110)
turtle.down()
turtle.left(24)
#画嘴巴
def Zuiba():
for i in range(90):
turtle.forward(2)
turtle.left(1)
#将函数一起运用
Yanjing()
Lian()
turtle.hideturtle()
Zuiba()
turtle.bgcolor("black")
turtle.done()
学会了怎么绘制图像后,接下来我们学习怎么在小海龟中打印文字:
在画板上打印我们想要的文字需要用到write来实现,
turtle.write('打印的内容',move=False,align='left',font=('宋体',11,'normal'))
turtle.write()一共有四个参数:
【打印的内容(arg)】:必填参数,用于指定要输出的文字内容,该内容会输出到当前海龟光标所在的位置。
【move】:可选参数,用于指定海龟光标是否移动到内容的右下角,默认为False(不移动)
【align】:可选参数,用于指定文字的对齐方式:
left【居左】、center【居中】、right【居右】,默认为left。
【font】:可选参数,用于指定字体,字号以及字形。
PS:字形可设置的值为normal(表示正常)、bold(粗体)、italic(斜体)、underline(下划线)
【案例】
import turtle
turtle.setup(550,550) #创建一个画板
turtle.hideturtle() #隐藏画笔
turtle.color("black")
turtle.write("命运把我推下悬崖,那我就坐在这里,给你唱支歌。",False,"center",font=("宋体",16,"bold"))
turtle.done()
在运行过后,我们会得到下面这个窗口,可以发现,我们要打印输出的这段话已经被小海龟写在画板上了;
在海龟绘图中如果想要和用户交互获得用户输入的内容该怎么做呢?
这时候我们就需要用到一个海龟绘图中必会的函数了;
textinput()
顾名思义,文本输入。通过textinput来弹出一个对话框,将输入对话框的内容返回到小海龟,并且返回的值为字符串类型。
turtle.textinput(title,prompt)
【title】:用于指定对话框的标题,显示在标题栏上。
【prompt】:用于指定对话框的提示文字,提示要输入的信息。
如右图所示:
学会了用户交互,接下来我们自己写一个无聊又没有意义的程序吧;
import turtle
turtle.setup(550,550)
turtle.hideturtle()
turtle.color("black")
turtle.up()
turtle.down()
turtle.write("命运把我推下悬崖,那我就坐在这里,给你唱支歌。",False,"center",font=("宋体",16,"bold"))
x=1
n=0
while x<2:
text=turtle.textinput("提示:",'请输入不带数字的文字')
n += 20
turtle.up()
turtle.goto(-220 , -20-n)
turtle.down()
try:
if text.isalpha()==False:
turtle.pencolor('red')
raise Exception(turtle.write("无效文字",False,'center',font=("宋体",11,"normal")))
else:
turtle.pencolor('black')
turtle.write(text,False,'center',font=('宋体',11,'normal'))
x +=1
except:
print()
turtle.done()
今天的小海龟之行就到这里,再会;