新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V6.0版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-音乐-法律-图书-高中课堂-实验 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

查看: 7632|回复: 18

[模块] 7171 - Python库 AP067【Turtle】绘图模块详解实例分析(共18个)

 关闭 [复制链接]
发表于 2021-4-5 10:43:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

您需要 登录 才可以下载或查看,没有账号?注册

x
同学们欢迎来到 Python Turtle库专题微课学习!
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
turtle绘图的基础知识:
1. 画布(canvas)

9 t# G; Z3 b  w0 N% m! D" A$ c        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
5 U/ G) z0 D. c6 K, |- @        设置画布大小

1 a- g" g! H+ Z) Z' F: D4 E
  1. turtle.screensize(canvwidth=None, canvheight=None, bg=None)   #参数分别为画布的宽(单位像素), 高, 背景颜色。
复制代码
  1. turtle.screensize(800,600, "green") #设置背景为绿色,大小为800*600像素
复制代码
  1. turtle.screensize() #返回默认大小(400, 300)
复制代码
  1. turtle.setup(width=0.5, height=0.75, startx=None, starty=None)9 T6 q  q) y5 h  Y
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:6 t  h& ^* Z  s: m# ^
  1. turtle.setup(width=0.6,height=0.6)( K; u' U7 c, N; ^
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔
6 ^5 j- c- `  q- g, q
2.1 画笔的状态4 p" u4 i' M: G$ y& R- M
        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。; U8 n) g! j6 X% t( }! G

) i- j/ T7 }% u# {( F# ]5 _) e2.2 画笔的属性+ {/ X8 p! F% o% O
        画笔(画笔的属性,颜色、画线的宽度等)4 Z% ]/ {7 a: R1 n5 B! C
        1) turtle.pensize():设置画笔的宽度;4 E* K7 @& }) j, y: b
        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。4 `/ \0 P" q1 B! \
        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越
) W, A6 j3 m* ^; O( _& d
: [" A: h7 N0 Y$ p) g6 _2.3 绘图命令
) M8 R7 t, a! |         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。3 I1 t! H; Q, I* U8 P, n

9 ]0 b. O" \2 l& [. @' t# G. f! T(1)    画笔运动命令# p3 o. {; P4 h9 d( L$ b  N
命令
说明
turtle.forward(distance)
向当前画笔方向移动distance像素长度
turtle.backward(distance)
向当前画笔相反方向移动distance像素长度
turtle.right(degree)
顺时针移动degree°
turtle.left(degree)
逆时针移动degree°
turtle.pendown()
移动时绘制图形,缺省时也为绘制
turtle.goto(x,y)
将画笔移动到坐标为x,y的位置
turtle.penup()
提起笔移动,不绘制图形,用于另起一个地方绘制
turtle.circle()
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
setx()
将当前x轴移动到指定位置
sety()
将当前y轴移动到指定位置
setheading(angle)
设置当前朝向为angle角度
home()
设置当前画笔位置为原点,朝向东。
dot(r)
绘制一个指定直径和颜色的圆点

3 f, n2 w) a: w) f: `(2)     画笔控制命令* Y3 g4 |* m+ Q. O% z

+ M2 t* N- h- J* j
命令
说明
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形状
) }7 _* o2 i. A* j6 m
+ F* f" J/ O0 w
(3)    全局控制命令
( _$ `' z" u, Q& I; I2 @+ f
* O$ z9 l8 N) Z& Q
命令
说明
turtle.clear()
* w) A$ {+ y: \: i8 c- [9 X* V
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()- M) ^$ }- x- i, e" E( `
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

9 Z' k& Y, e6 Z
) m: Z: V3 g6 H  ?(4)    其他命令5 f; w. X6 d, ^9 ~5 s

0 Q- Y& c$ J8 c- l  t& i( ^
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数7 O2 H  n# C& q! q: x
必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。
7 `: @1 x, g. \  o( A' T
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针

/ [) ]8 ^  z5 h: e  Q$ L# V" ^' y
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly(); S- n0 Q* l8 l( w+ Y) D
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。

' a0 \8 j8 d2 {
3. 命令详解

. p9 x7 t6 B: N

2 t5 _% Y% D0 U9 B5 t
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆
1 C4 S9 S# m* {( u- T, E
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。

# r! K- c. d& g! Y4 B+ d
       举例
  1. circle(50)          # 整圆3 m$ |- R: L: f( Z: U" e. r
  2. circle(50,steps=3)  # 三角形) w) t3 `7 H, f$ n  U
  3. circle(120,180)     # 半圆
复制代码

素材1:turtle库介绍.docx

36.91 KB, 下载次数: 278, 下载积分: 财富 -1 点

turtle库详细介绍

新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
Q群推荐 大榭本地求职招聘QQ群,欢迎转发分享本地招聘信息资讯! 官方招聘1群(已满);官方招聘2群:315816937 *
 楼主| 发表于 2021-5-30 22:39:52 | 显示全部楼层
7171_01.gif 7171-02-01.jpg 9 {1 @! {- L2 d6 C/ `  \
% L4 r6 O, }, d/ Q
例2:太阳花效果图 如上所示 ↑↑↑
) \4 j; S& V1 x7 F6 Y& u
  1. # -*- coding: utf-8 -*-) q( x) |; E) j1 ~$ e  l
  2. """
    + Z7 }* V2 U3 t& E$ x2 M/ V
  3. @Team: 新大榭论坛
    ) B$ w4 |4 f/ {
  4. @Author: 张黎斌
    + ]7 M. ?& a5 ]; ^1 p& ?
  5. @update: 2021-08-01# c% w: _  Y; J1 L
  6. @Version: v1.1/ g1 C: I% P9 {7 s
  7. @BBSid: 7171-02-01
    $ L+ S6 t7 E4 E, p) u9 p6 a
  8. @Level: B
    7 e5 x5 j2 J8 ]- u5 M6 X# H" V. T
  9. ---------------------------* ]. b9 |2 g* h$ O1 \" B
  10. 【turtle】实例2:太阳花& I! I7 r$ P8 ]# P& j' @
  11. ---------------------------
    4 V" [  p3 x9 M7 q9 B: U6 D. U; f( _
  12. """2 e, a1 G) h  M! u
  13. print("+----------------------------------------------------------+")- o# c/ b2 }- Y2 ^5 }) f' t
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")
    ) P- B8 B! t  Z  m7 }
  15. print("+----------------------------------------------------------+")! U5 R. n* \9 |. }3 N
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")
    : y" A# g! p( o0 q4 M! H* h2 A
  17. print("+----------------------------------------------------------+")# u2 r6 x& P2 ?0 J
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")- B1 e# ^# g; k2 W+ o% }# Z' G
  19. print("+----------------------------------------------------------+")
    ) \6 w  K/ \9 e! I7 L4 f. W
  20. 0 y! q+ p1 K3 U
  21. # 以下为主程序核心代码 ↓↓↓
    ( x4 ~5 H9 l3 [0 o

  22. 6 ]% r6 r& _* Z7 W) z
  23. import turtle7 N2 f7 O+ e. `" y- Y$ A- H
  24. import time& q" k: g+ K, P2 s

  25. 8 e6 M1 N  @9 Y0 C
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持  w1 k' Z# M, g; u# L
  27. : `: Y. i  k; g! Y
  28. turtle.color("red","yellow")
    - {) x, {' S# C8 ?2 e! F

  29. 6 h" ^1 r! {& a) A) b; \- C
  30. turtle.begin_fill()
    1 E: p  j4 D+ b$ N7 j
  31. for _ in range(50):$ U8 e. w# l" T
  32.     turtle.forward(200)% b: @7 Q+ B0 S7 A/ A  h; m
  33.     turtle.left(170)2 T; m' ?$ M7 P3 {; x
  34.     turtle.end_fill()# v) `  N5 D* c- U4 B2 N: E6 c
  35. . r; L1 G# C* O+ w8 B% e
  36. turtle.hideturtle() $ U- e5 u& M3 e6 I. _6 F

  37. ( i/ D) G8 |& u
  38. turtle.mainloop()" x# L4 \- H& }6 S: R4 h

  39.   W& P  {2 n" q- U9 C) q
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!% a) x  T9 i& @0 j+ y
  41. & c9 @: X. K4 v; Q6 p0 G- z- l4 b( o
  42. print("┏----------------------------┓")
    8 P/ d2 l+ z& Q% }7 w
  43. print("┣--- 按下回车键即退出程序 ---┫")
    ! D* V# y; s+ Z
  44. print("┗----------------------------┛")
    - q# N& f6 m4 k' s! e" Y6 V
  45. input(">>>")
复制代码

7171-02:太阳花.zip

27.08 KB, 阅读权限: 5, 下载次数: 4, 下载积分: 财富 -1 点

源代码

新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
 楼主| 发表于 2021-5-30 23:09:15 | 显示全部楼层
7171_02.jpg
# {- ~' q' B& X; Z6 E3 b7 U- D4 ~; y. U* Z
例2:五角星效果图 如上所示 ↑↑↑
& M/ a, r6 j) |6 d$ D
  P; O" s" j5 C) O
  1. """
    " M& L" o4 q. [3 R. J! |$ C
  2. 7171《实例》 - 02 - 五角星) Z6 X& X, o, D* ]/ u
  3.   T7 _. J7 H5 g! u5 J
  4. Version: Python 3.x
    9 [( j0 f, {0 }2 p/ ~6 I7 ?
  5. Team: 新大榭2 o) l8 z( z# |  d- @; @
  6. Author: 张黎斌
    . t6 S' H4 ]& ^, C8 e2 {% O9 r
  7. update: 2021-05-30
    % S4 f/ J0 }* Y$ ?1 D$ g0 b
  8. Level: B' ~: G% P' C8 M- g5 q& v3 B
  9. 6 v9 V/ A2 V/ P9 g
  10. """2 q' v2 a* k+ E* d4 ?6 E
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    / ~9 ~  I" }, Y, K

  12.   J6 ?/ B, K* D: r3 [) S
  13. # 以下为主程序核心代码 ↓↓↓' Y% p" l/ L; D" e$ t. W3 [
  14. 6 X6 G3 ?6 g$ F2 e% [# c
  15. # coding=utf-8
    7 h2 f" ~5 x* ^% B* o3 V/ |
  16. import turtle
    7 ]% h3 u/ R, D( u2 P; L* w) @
  17. import time- _5 E8 ?. A) A! n& i$ A
  18. 1 x+ u$ m6 w7 W* `
  19. turtle.pensize(5)* ~, Y4 z( u! |4 ?0 P0 Q
  20. turtle.pencolor("yellow")+ R# @) S- g2 ^( z4 u" x0 T% f
  21. turtle.fillcolor("red")
    # {2 @3 N4 f& [7 k; K

  22. & K1 a) `2 r7 H' ^4 ?
  23. turtle.begin_fill()+ e( j5 R% I% ^, D
  24. for _ in range(5):
    4 N1 L8 h) s+ V1 {  S3 v4 v4 q
  25.     turtle.forward(200)9 d& d% @7 S  p+ J
  26.     turtle.right(144)
    7 B4 n8 e. f8 C0 g. Z! M
  27. turtle.end_fill()3 ~7 c2 g1 d7 \- W; r8 C- S
  28. time.sleep(2)
    0 W; l; j7 z. C& x

  29. ) B& r  T5 o8 s  z% O% ^
  30. turtle.penup()
    + }0 [6 C4 C' A0 N$ X+ F) J
  31. turtle.goto(-150,-120)
    8 h% |0 Z, L+ N/ m
  32. turtle.color("violet"): {' m% A! w9 Y2 U6 k# e. I7 V
  33. turtle.write("新大榭", font=('Arial', 40, 'normal')); l  v" s8 s1 G# N9 |4 P
  34. % e: O- f/ B3 P* Y. w
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    9 x, R6 r, {7 U5 d  b
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")8 u8 x; K% b5 B# [) V9 z  @4 k5 N
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")& A) g: b2 M5 W& D8 f
  38. input("")
复制代码
2 H& L1 H4 p! A

* Y" W( h+ q+ x7 B" E

7171_例2_五角星.zip

9.33 KB, 阅读权限: 5, 下载次数: 8, 下载积分: 财富 -1 点

例2,源代码

新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
北仑单身女神专属群:181567400 北仑单身男神专属群:140788506  平台大数据筛选,勇敢为爱宣告,拒绝骚扰!
 楼主| 发表于 2021-5-30 23:13:15 | 显示全部楼层

不好意思,这个属于 Python GUI 编程(Tkinter),课程后期会有介绍

7171_03.jpg ' L! h" y- e6 ^, T7 f) j

" k" E  v5 c+ |  V8 N: W% g$ U例3:动态时钟效果图 如上所示 ↑↑↑  I2 C9 e6 |- F3 j, \# o- g4 Y

- K6 `4 o; @9 J

7171_例3_时钟.zip

14.82 KB, 阅读权限: 20, 下载次数: 4, 下载积分: 财富 -1 点

例3,源代码

新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
 楼主| 发表于 2021-5-31 00:32:27 | 显示全部楼层
7171_04.jpg
4 L- _% j  T( [4 S( N例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

965 Bytes, 阅读权限: 10, 下载次数: 13, 下载积分: 财富 -1 点

例4,源代码

新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2026-4-3 20:54 , Processed in 0.082617 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表