龙空技术网

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

易三一世 9683

前言:

目前小伙伴们对“python做画图软件”大约比较重视,我们都需要分析一些“python做画图软件”的相关资讯。那么小编同时在网络上收集了一些有关“python做画图软件””的相关资讯,希望大家能喜欢,咱们快快来学习一下吧!

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()

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

标签: #python做画图软件 #python t分布分位数 #python3安装turtle库 #python的绘图工具 #python用turtle设置画布背景颜色