打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Turtle海龟库:python3内置简单却很强大的绘图库

1 说明

====

1.1 环境:python3.8,集成(内置)turtle库;华为笔记本电脑+deepin-linux操作系统。

1.2 turtle库入门级介绍:基本了解turtle库,python基础知识复习,讲解清楚,注释仔细,小白秒懂,逐步深入,适合仔细品读。

1.3 代码来自turtle demo和网络(自己整理和加工),仅供学习,如有侵权,请联系,定删。

2 海龟画图初级

===========

2.1 基本窗口设置和图片显示

2.2 显示图片

2.3 代码:

#自定义窗口大小,背景颜色#窗口标题名,位置import turtle as t#方法一#其实是通过设置画布大小来改变窗口大小#t.screensize(800, 600, 'green')#screensize() #返回默认大小(400, 300)#用screensize设置的是画布大小及背景色,窗体和画布不是一个概念#会出现滚动条#方法二#屏幕的宽和高的百分百,默认位置屏幕的居中#t.setup(width=0.6, height=0.6)#指定窗口大小和位置,注意左上角坐标为0,0t.setup(width=800, height=800, startx=100, starty=100)#载入背景图片,是原图大小显示与窗口大小不是自适应#t.bgpic('/home/xgj/Desktop/turtle/1.jpeg') #bug,可以识别png图片,但是jpeg不行#用截图工具,截图生产png,可以。#网上说只能显示gif图片,其实还可以显示png图片t.bgpic('/home/xgj/Desktop/turtle/2.png') #请注意,还可以显示gif图片,但是gif图片是不动的#窗口的标题名#默认为Python Turtle Graphics#t.title('good') #可自定义#需要手动关闭t.done()

3 太阳花

======

3.1 效果图

3.2 代码:

#太阳花import turtle as t#turtle.color(color1, color2)#同时设置pencolor=color1, fillcolor=color2#默认第一画笔颜色,第二为填充颜色t.color('red', 'yellow')#画笔速度#画笔绘制的速度范围[0,10]整数,数字越大越快t.speed(10)#注意颜色填充fill需要begin和end之间#类似一对括号t.begin_fill()#下划线表示 临时变量, 仅用一次,后面无需再用到for _ in range(50):    #向前走长度=distance    t.forward(200)    #向左转,逆时针转动角度=degree    t.left(170)t.end_fill()t.done()#补充:#t.backward()  #向后走长度#t.right()   #向右转,顺时针转动角度

4 画圆和多边形

============

4.1 效果图

4.2 代码

from turtle import * #turtle.circle(radius, extent=None, steps=None)#extent为度数,默认360°,也就是一圈#steps数值越大,圆的弧线越平滑,一般推荐50,不设置就是默认#circle(100) #默认360°为一圈circle(200,360,50) #圆circle(200,360,3) #为三角形circle(200,360,9) #为9边形done()

4.3 同心圆代码

from turtle import *#初始圆(最内部的圆)的半径r=50#同心圆间的距离linew=30circle(r)# 修改画笔宽度#pensize(5)# for循环,用于绘制同心圆for i in range(1,9):    # 画笔抬起(不会在窗体上留下痕迹)    penup()    # 移动画笔到坐标(0,-10*i)    #去某个坐标点    goto(0,-linew*i)    # 画笔落下(开始在窗体上留下痕迹)    pendown()    # 在循环中不断绘制半径不同的圆    circle(r+i*linew)done()

4.4 同心圆效果图

4.5 移动的圆

==========

4.5.1 效果图

4.5.2 代码

#移动的圆from turtle import * bgcolor('black')#该函数学习# 自定义坐标系统,并切换到 world 模式setworldcoordinates(-100,-100, 150, 100) speed(0) pendown() pencolor('green')#画圆circle(30,360,50) for s in range(400): setworldcoordinates(-100,-100, 10+s*0.5, 100)done()

5 高级一点

========

5.1 效果图

5.2 代码

import turtle as t t.bgcolor('black')sides=6  #6边colors=['red','yellow','green','blue','orange','purple']#120为圈数,层数for x in range(120):    t.pencolor(colors[x%sides])    t.forward(x*3/sides+x)    t.left(360/sides+1)    t.width(x*sides/200)t.done()

5.3 输入文字的代码

import turtle as t #画布的背景颜色设置t.bgcolor('black')#textinput是调用tkinter的弹出框#第一个字符串为弹出窗口的标题名#第二个字符串为输入框上面的文字名my_name=t.textinput('输入你的姓名','你的名字?')colors=['red','yellow','purple','blue']#100为一百圈for x in range(100): #画笔的颜色选择 t.pencolor(colors[x%4]) #提笔 t.penup() #向前步长 t.forward(x*4) #落笔 t.pendown() #文字输出 t.write(my_name,font=('Arial',int((x+4)/4),'bold')) #向左转动92° t.left(92) #结束后手动关闭窗口t.done()

5.4 效果图

6 画树

====

6.1 图

6.2 代码

#画树#熟悉可能的缩写from turtle import *from random import *from math import * def tree(n, l):    pd() # 下笔 pendown    # 阴影效果    t = cos(radians(heading() + 45)) / 8 + 0.25    pencolor(t, t, t)    pensize(n / 3)    forward(l) # 画树枝,fd=forward      if n > 0:        b = random() * 15 + 10 # 右分支偏转角度        c = random() * 15 + 10 # 左分支偏转角度        d = l * (random() * 0.25 + 0.7) # 下一个分支的长度        # 右转一定角度,画右分支        right(b)        tree(n - 1, d)        # 左转一定角度,画左分支        left(b + c)        tree(n - 1, d)         # 转回来        right(c)    else:        # 画叶子        right(90)        n = cos(radians(heading() - 45)) / 4 + 0.5        pencolor(n, n*0.8, n*0.8)        circle(3)        left(90)         # 添加0.3倍的飘落叶子        if(random() > 0.7):            pu()            # 飘落            t = heading()            an = -40 + random()*40            setheading(an)            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)            forward(dis)            setheading(t)              # 画叶子            pd()  #pendown            right(90)            n = cos(radians(heading() - 45)) / 4 + 0.5            pencolor(n*0.5+0.5, 0.4+n*0.4, 0.4+n*0.4)            circle(2)            left(90)            pu()  #penup             #返回            t = heading()            setheading(an)            backward(dis)            setheading(t)     pu()  #penup=提笔    backward(l)# 退回 #bgcolor(0.5, 0.5, 0.5) # 背景色bgcolor('black')ht() # 隐藏turtle=hideturtlespeed(0) # 速度,1-10渐进,0最快tracer(0, 0)pu() # 抬笔backward(100)left(90) # 左转90度pu() # 抬笔backward(300) # 后退300tree(12, 100) # 递归7层done()

7 高级互动性

==========

7.1 效果图

7.2 代码

from turtle import Screen,Turtle,mainloopclass ColorTurtle(Turtle): #类的初始化定义 def __init__(self,x,y): Turtle.__init__(self) self.shape('turtle') self.resizemode('usre') self.shapesize(3,3,0) self.pensize(10) self._color=[0,0,0] self.x=x self._color[x]=y self.color(self._color) self.speed(0) self.left(90) self.up() self.goto(x,0) self.down() self.sety(1) self.up() self.sety(y) self.pencolor('black') self.ondrag(self.shift) #类的函数定义 def shift(self,x,y): self.sety(max(0,min(y,1))) self._color[self.x]=self.ycor() self.fillcolor(self._color) setbgcolor()#独立的函数定义def setbgcolor(): screen.bgcolor(red.ycor(),green.ycor(),blue.ycor()) #主函数定义def main(): global screen,red,green,blue screen=Screen() screen.delay(0) screen.setworldcoordinates(-1,-0.3,3,1.3) red=ColorTurtle(0,.7) green=ColorTurtle(1,.3) blue=ColorTurtle(2,.6) setbgcolor() if __name__=='__main__': main() mainloop()

代码来源网络,仅供学习。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python内置库turtle绘制有趣图形
趣味python | 一步一步绘制小猪佩奇
每天好心情——Python画一棵樱花树
Python|心型的绘制
Python画图练习案例分享
海龟绘图:大家一起来登场!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服