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,0 t.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=30 circle(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=hideturtle speed(0) # 速度,1-10渐进,0最快 tracer(0, 0) pu() # 抬笔 backward(100) left(90) # 左转90度 pu() # 抬笔 backward(300) # 后退300 tree(12, 100) # 递归7层 done()
7 高级互动性
==========
7.1 效果图
7.2 代码from turtle import Screen,Turtle,mainloop class 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()
代码来源网络,仅供学习。
本是北方人的拿手绝活,却被南方人年入40亿,做成行业第1,凭啥自古以来,中国就有南米北面的说法,南方人以大米为主食,北方人则偏爱面食,尤其是河南河北,主要的主食就是面食,其中河南是国内最大的小麦产区,河南也因此产生了很多著名的面食品牌,其中就
优雅绅士的男孩名字,温暖如春,卓尔不凡基本上大家从小耳熏目染过一句话,就是你是一个绅士,要女士优先。,是的,这不是对男生的不公平,而是一个男生绅士的表现,就是尊重女性,举止优雅,待人谦和谈吐得当,现在确实很多男生应该加
有王子气质的男孩名字,个个儒雅绅士贵不可言王子,通常是一国之君的儿子,在童话中,王子都是高贵和正义bai的象征,而在现实生活中,王子是代表着一种难得的气质,一种优雅的气质,对人要亲切温和。那么想要孩子拥有王子般的气质,其实
猛男卖水果也是亮了任何文明方式的宣传都是受欢迎的!媒体上发了某一商场雇猛男卖水果,保洁阿姨忘神欣赏,被发现娇羞表情亮了的文图,让人感受颇深。是不是有些人不习惯,认为只有女人做模特,配当宣传员,而男士
桑吉才让神昭海表高原文化与海洋文化的碰撞交流从巍峨昆仑到闽地海域,青海省热贡唐卡一级工艺美术大师桑吉才让于厦门市举办了笔尖上的修行唐卡展,集中性展出了60幅精品唐卡。展览上,一幅宽3。23米,高2米的神昭海表引起了专家们的关
猛男幼师走错片场,带娃做操走红,网友老师似乎玩得更开心文Miss刘教育课堂(原创丨欢迎转载分享)谈到幼师,大家脑海中的第一印象都是年轻貌美的女老师们,在教着孩子们唱着可爱的儿歌,跳着萌萌的舞蹈,但是这位老师的出现,真是让人眼前一亮,甚
内镜下切除垂体瘤的优势是否切除完全比用显微镜还清楚陈航文河南省人民医院神经外科主任医师教授阅读提示垂体瘤,有各种各样的治疗方法,包括非手术治疗和手术治疗,而手术治疗又分为传统手术,显微镜手术和内镜下手术等,究竟该选择那种方法?一定
河南这家眼科医院率先采用新技术治疗眼中风脑中风这个词,我想大家都不会陌生,可是大多数人不知道的是,在眼科学界,还有一种疾病也令人闻风丧胆,就是眼中风视网膜中央动脉阻塞(centralretinalarteryocclus
外科医生干的都是体力活这个手术,专家忙活了5个小时陈航文河南省人民医院神经外科主任医师教授镂空样雕刻的开颅手术这该是今年第4例高评分的血管动静脉畸形了,患者是28岁男性,近期有出血病史。终于病变位于右侧了,可以省去语言功能区的觊觎
六味地黄丸是好药,这样服用是错误的六味地黄丸的知名度不亚于板蓝根,大家把板蓝根当成了神药,有炎症就冲一包,防治感冒。印象里的六味地黄丸也是这样,虚了就补。睡不着,吃六味地黄丸胃口不好,也吃六味地黄丸性生活不给力,还
六一儿童节开馆公告徽县博物馆六一儿童节开馆公告徽县博物馆陇南市摄协马飞虎20200529201647六一儿童节开馆公告亲爱的游客朋友2020年六一国际儿童节即将来临,为了让小朋友们度过一个快乐而有意义的节日,