wuyangteam 发表于 2020-8-15 14:58

[番外]turtle绘图尝试上手啦

本帖最后由 wuyangteam 于 2020-8-15 15:03 编辑

# 写在前面的话
第二天的教程已经更新,今天这个内容是带你编写一些好玩的例子的。跟我一起来吧
# 01-02.turtle绘图库
## 一. turtle简介
turtle库是Python的绘图函数库,turtle意思是乌龟,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点(0,0),位置开始,
根据一组函数指令的控制,在平面坐标系中移动,从而在它爬行的路径上绘制了图形。
考虑一下,要想画图,我们需要些什么:
- 画布(如果纸上作画,那么就是纸,涉及在多大的纸上作画,长宽需要指定)
- 画笔(笔,笔的线条粗细,颜色,笔的方向等)

### 1.用到的函数
对于零基础的小伙伴,我来解释一下这里的模块与函数。turtle是一个python提供的模块,导入到我们自己的程序之后,我们就可以使用该模块内定义的函数和类啦。
函数就是方法,就是你做什么事,达到什么目标,以及怎么做的。
比如你想赋值,然后想输出。
a = 5
print(a)
我们还可以将上面两条语句放到函数里:

万一我还想打印b的值咋办呢

都是可以的。下面我们使用
import turtle
然后就可以使用turtle里面的函数画图啦,加前缀turtle.是为了限定是这个模块里的函数。
####turtle.screensize(canvwidth=None, canvheight=None, bg=None)
参数分别为画布的宽(单位像素), 高, 背景颜色。
#### turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
#### turtle.pensize()
设置画笔的宽度。
#### turtle.pencolor()
不传参数时,返回当前画笔颜色;传入参数则设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
#### turtle.speed(speed)
设置画笔移动速度,画笔绘制的速度范围整数,数字越大越快
#### turtle.forward(distance)
画笔沿当前方向前进的像素值,计算机中,定义长度,按像素值或者百分比。像素就是屏幕上一个一个的点,就是大家经常看到的分辨率的东西。
比如 800X600的,1024x768的,这个都是宽度像素x高度像素。
#### turtle.backward(distance)
画笔沿当前方向后退的像素值
#### turtle.right(degree)
表示画笔顺时针旋转的度数,比如一开始画笔从左到右画了一条长度为100个像素的直线,然后right(90),那么笔的方向就从向右变成了向下。
#### turtle.left(degree)
画笔逆时针旋转的度数
#### turtle.goto(x,y)
将画笔移动到坐标(x,y),注意坐标原点,在画布的左上角,画布是在屏幕上的一块矩形区域。
#### turtle.penup()
提起笔移动,不绘制图形,用于另起一个地方绘制
#### turtle.fillcolor(colorstring)
绘制图形的填充颜色
#### turtle.color(pencolor, fillcolor)
可以同时设置pencolor和fillcolor
#### turtle.begin_fill()
准备开始填充图形
#### turtle.end_fill()
填充完成
#### turtle.goto(x,y)
将画笔移动到坐标为x,y的位置
#### turtle.circle()
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
#### turtle.write(s)
写文本,s为文本内容
#### turtle.mainloop()或turtle.done()
启动事件循环 -调用Tkinter的mainloop函数。
必须是乌龟图形程序中的最后一个语句。
#### 关于坐标体系大家可以参考
https://www.cnblogs.com/nickchen121/p/11167694.html
### 2.安装turtle模块库
turtle是需要Tkinter作为基础,Tkinter在windows上python3.7安装的时候,你勾上安装就可以啦。 再
在linux下需要自己手动安装
sudo apt install python3-tk

#### 3.程序解析
##### 画矩形
我创建了源代码test.py,它就是模块test,为了下次可以调用它,我把里面的代码都包装成了函数。
看一下,15行暴露在最外面,函数是需要调用才会执行的,自己本身无法触发。__name__是python内置的一个模块属性,
如果从其他模块来引用它,__name__等于test的,只有当运行test.py本身,__name__才等于main。
所以你已经知道了入口,我们设置了笔的速度,颜色,以画布正中心为原点,在原点右边画了一个正方形。
for ... in ...这个是循环,意思就是小乌龟朝右向前跑了100个像素,然后向右旋转90度,方向朝下了,再往前跑100个像素
其实就是, turtle.forward(100)
         turtle.right(90)
               画一条线,改变小乌龟的前进方向,总共需要画四条线,因此range(4),产生(0,1,2,3)的一个列表,循环四次。


               
如果我们要填充颜色,怎么写呢?


最后我们还隐藏了小乌龟。
那么问题来了,如果是画一个矩形,应该怎么画呢,长和宽不想等,请大家动手哦
##### 画太阳花


这个也很简单啦

我们调整小乌龟的方向度数就可以实现啦,是不是很有意思。

看完帖子在看这篇博客,就简单啦
https://www.cnblogs.com/chen0307/articles/9645138.html

最后我们再去看看教程第一天的程序源代码,会更难一点,但中心思想不变的。
从现在开始你要锻炼你的逻辑思维啦,后面我还会再分析,今天就到这了

wuyangteam 发表于 2020-8-15 15:18

yoyoD 发表于 2020-8-15 15:10
之前学的python,长时间不碰都快忘干净了。。

哈哈,快跟着捡起来,等我们学完基础,开始玩点爬虫入门,再到数据分析,人工智能,浅尝,具体方向,小伙伴自己选择

南岸 发表于 2020-8-15 17:49

学习了,感谢分享

黄明礼 发表于 2020-8-15 18:12

在IDLE中点击Help ---> Turtle Demo里面有很多海龟示例



点击右下角的免费评分为我评个分吧

aa吴所谓 发表于 2020-8-15 18:52

学到了,建议下次直接发代码,不要发图片,比较懒{:301_998:},我的太阳花画出来和你的不太一样

wuyangteam 发表于 2020-8-16 09:07

aa吴所谓 发表于 2020-8-15 18:52
学到了,建议下次直接发代码,不要发图片,比较懒,我的太阳花画出来和你的不太一样

:lol,因为是新手教程,代码就几行,发图片就是为了让大家敲代码,哈哈。
以后会直接贴关键代码的,附上源码文件就可以了。感谢支持
页: [1]
查看完整版本: [番外]turtle绘图尝试上手啦