新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

新大榭论坛 门户 查看主题

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

发布者: admin | 发布时间: 2021-4-5 10:43| 查看数: 7232| 评论数: 18|帖子模式

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

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

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

8 E1 q5 V1 a- w        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
2 v( H& ^, b* _! w1 k! Q, a        设置画布大小

1 J+ R2 _- B- H7 l# |
  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)7 C' _& t% ~% l! J
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:
- |- \: i$ g2 C. [
  1. turtle.setup(width=0.6,height=0.6)% v7 `0 M. i2 |1 @8 y
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔

: r  n3 k- K9 n& M( S4 b. c' f3 O* n+ v2.1 画笔的状态' u; l* U8 H6 L8 ]* k
        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。; Y: v0 ~' p% n1 r( @
$ X: a& q- y5 Z9 _# l, }! w" C$ L0 y
2.2 画笔的属性) r* d+ c) [9 t- u5 D
        画笔(画笔的属性,颜色、画线的宽度等)3 x" U: Q$ }' N
        1) turtle.pensize():设置画笔的宽度;
1 x* X: [- M& [$ [, M/ S2 W        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。: [1 S4 M, ?+ e1 R. \
        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越
, O0 R& S. o1 S
3 `4 }* V, s* q* n2.3 绘图命令5 m# c  q! j2 i+ z  o% I4 Z8 s2 Y( r
         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
$ x" W1 l" T# F, i% k$ s1 e% |' y/ ~5 H9 z, U
(1)    画笔运动命令
0 j6 h) p6 U3 e. C9 M5 \6 m
命令
说明
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)
绘制一个指定直径和颜色的圆点
1 x) g: y4 z4 m/ E: w3 ]
(2)     画笔控制命令2 @3 T$ x  I; m( f

* G" j$ k- V6 z* v( H
命令
说明
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形状
% B$ G% U% `" R8 I- b* C' D7 ]
; f$ U% I  k. z" \0 ~! J, ]
(3)    全局控制命令
6 b4 ~. i* k% @" z0 t! @& z+ n; m* \5 h8 ~
命令
说明
turtle.clear()
) Y" m/ L( Z! e* X
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()
- x9 M" D9 I/ B
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

  }& }: A( X2 d; l" }
2 o1 A' t7 f0 y0 J(4)    其他命令2 I- R) ^! |  b! ~2 k6 l
) G7 l, s( ^. o; s1 [# `3 k4 G
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数
  f$ w8 u6 i' C8 ?必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。
5 b% }( Z6 }7 r  ]: J
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针
8 U! X* X- K  _" @5 A9 b: _; E- W& @3 ~
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()
' O. h. V* b0 F3 m2 q
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。

  e% H5 S% e4 k! j
3. 命令详解

% B* Q5 D- ?) V/ u+ e7 ^
* T; ]6 S- U2 B3 r. Y. i1 c5 i
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆
& H. E  F4 |. z. l. l4 i: m9 W% }
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。

- ?: @$ t3 T4 w% h; p# W
       举例
  1. circle(50)          # 整圆& m! R3 R) S2 `7 l
  2. circle(50,steps=3)  # 三角形9 I" ?0 ~7 u( M; {% F+ F
  3. circle(120,180)     # 半圆
复制代码

素材1:turtle库介绍.docx

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

turtle库详细介绍

最新评论

admin 发表于 2021-5-30 22:39:52
7171_01.gif 7171-02-01.jpg
# {7 |3 Z" W* Z# {
- z& _7 p" |& D- f! \例2:太阳花效果图 如上所示 ↑↑↑
  s; _- ?/ X; e2 d
  1. # -*- coding: utf-8 -*-* f7 I6 @+ t: V1 n! ]
  2. """% k, N' U& V. A) ?
  3. @Team: 新大榭论坛
    : P7 d* w0 z# p9 P5 Q; _1 ?
  4. @Author: 张黎斌
    - s; g3 I5 s/ `' m& Y9 X4 u1 ^8 `$ Q
  5. @update: 2021-08-01
      q6 B2 m& b) C- E% H
  6. @Version: v1.1) q8 S7 d8 ]1 y) s. ]7 _1 e, E
  7. @BBSid: 7171-02-01
    * C, ]5 `' |' s/ c$ s/ b
  8. @Level: B. m% c5 p2 R: V* O0 _- [- H2 Q
  9. ---------------------------
    & {" W: [+ X/ N( ~3 e
  10. 【turtle】实例2:太阳花
    ) Z) c4 f7 G" F* ?, C
  11. ---------------------------
    " n& V, `' A6 _+ `* {$ {
  12. """$ v- Q! X3 ^- R( M' ~
  13. print("+----------------------------------------------------------+")
    . t+ G7 |7 }( g* j% f% M) q
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")# h8 i6 X" j, K4 H) t# w3 R( K
  15. print("+----------------------------------------------------------+")
    8 Y7 `8 s% A5 Z! ^5 S# m( K
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")
    4 p% }: h* x# A0 |) q- u
  17. print("+----------------------------------------------------------+")% c+ d- {8 V8 U( h  h' k/ u9 J% Y
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")
    . O8 {# O" `4 T7 p3 k* u, _: M
  19. print("+----------------------------------------------------------+")  Y, \$ y/ N% w; E5 K7 }3 n

  20. * x+ ]4 n, u9 x
  21. # 以下为主程序核心代码 ↓↓↓1 e) C3 x% X2 a( n

  22. ) ]4 E  r8 \1 G& @0 @" X- ?. l% u
  23. import turtle
    " E1 `8 v$ m* j8 }* Q' d$ N
  24. import time2 ~( R) K, |% A8 \/ S- ]
  25. + h9 c0 \0 y0 {1 U5 k' b; f; {
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持
    " o% k! g6 }& [8 F& l

  27. 3 \9 s) K0 M) K5 ?7 d/ K, [$ F
  28. turtle.color("red","yellow")
    ! @; Z3 k: N6 h& v) v0 i5 Y

  29.   B" k) A: w  Z! p# D
  30. turtle.begin_fill()
    + b& X  u' U+ S& R
  31. for _ in range(50):
    # p2 b; b+ L3 h  {2 ]# m' d
  32.     turtle.forward(200)+ {7 {' C' g2 s' k; X
  33.     turtle.left(170)
    1 C2 J5 o. u2 }
  34.     turtle.end_fill()
    9 c$ M# F6 F' P. B) w

  35. : D5 ~# C6 y! U6 [* h: @2 a
  36. turtle.hideturtle() $ Y: z' d5 Z" l2 A% r) u1 s
  37. ( q5 E; B5 m1 j
  38. turtle.mainloop()8 H/ n, N5 G. C2 \0 P, U

  39. 8 _* O- [5 N# Z8 i: b$ Y3 ?
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!
    7 r' r5 h) K; q4 J7 @1 w9 _
  41. " d, k! Z$ P, ^6 G3 @: ~
  42. print("┏----------------------------┓")
    / Z2 k2 n" T/ b
  43. print("┣--- 按下回车键即退出程序 ---┫")
    ; m  G/ D# t. |1 Y% I7 p& @
  44. print("┗----------------------------┛")
    ( U" F: e6 ^  [  t* y
  45. input(">>>")
复制代码

7171-02:太阳花.zip

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

源代码

admin 发表于 2021-5-30 23:09:15
7171_02.jpg
$ R) a+ z+ x" W4 T3 _+ w. `  t2 h
6 ?; }- c! y% u' T+ k- J例2:五角星效果图 如上所示 ↑↑↑2 [& W3 m  l8 B3 @; m" k

( |& n: u* I# w) O) P9 P  p
  1. """
    1 Q. R3 R, E+ T# H) L! S
  2. 7171《实例》 - 02 - 五角星( a# I% M  ]( }# E

  3. . S/ R+ t. Z+ `3 v/ X
  4. Version: Python 3.x
    * G. @. f5 Y7 h$ Z3 ^
  5. Team: 新大榭4 Y, ^: l& [: R4 X& P+ R3 e/ }
  6. Author: 张黎斌
    9 q* Q2 S$ ]6 ?! M% ^5 m  ^. D
  7. update: 2021-05-30
    , j/ T7 ]/ A$ |" C
  8. Level: B" x3 i/ v, g3 ^% r& H) c/ N

  9. 5 ~) @4 A, l4 Q
  10. """
    + G- X9 Z) c- F$ ^, w9 p
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")$ R5 z7 S/ Z5 }" `% l

  12. 9 A2 O5 Y3 n& Y1 s6 q
  13. # 以下为主程序核心代码 ↓↓↓4 a. G  k7 j/ Z

  14. % P8 O  Q( B0 o9 l5 E: Z7 V1 y- C6 W
  15. # coding=utf-8, C7 f9 w1 _; k* k" n+ y" U
  16. import turtle
    ! R* ]6 w" H0 e$ P  p
  17. import time
    4 ]! j# K% W  I% [) D* O! b

  18. # z  ?( Z$ {$ n0 P* p
  19. turtle.pensize(5). r9 h/ x4 B$ p& j/ a7 Q9 W
  20. turtle.pencolor("yellow")3 H1 `) V/ V: b5 j) t4 M. `
  21. turtle.fillcolor("red")
    3 T8 _' h) P- ?* w  w" k) D, }
  22. 8 M, e  a+ ~9 g. y' ^
  23. turtle.begin_fill()5 A* c4 v- ^/ j
  24. for _ in range(5):
    * v) t. h' H$ O  M0 n4 e8 u
  25.     turtle.forward(200)) \* o8 ]  F6 {
  26.     turtle.right(144)* \0 e7 C/ ~& [+ r+ _6 ?* ^
  27. turtle.end_fill(); F7 y& D  c0 c$ n
  28. time.sleep(2)4 l' U8 Q. F7 h* j; }: q

  29. 0 @( }1 s$ P3 k
  30. turtle.penup()
    + \0 _2 Z" f% L& A- ?; u7 i, l
  31. turtle.goto(-150,-120)
    ; [2 f; p5 @% O- L# P* }
  32. turtle.color("violet")
    & {3 v* c4 z. E
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
    0 C- g4 q2 h: d( N- {/ \

  34. ; a* i5 L8 i! e
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    0 z4 f1 p; W; Q( Z; D% P
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +"). o. k! w( p* m
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")
    * Z2 @0 t0 h4 U% n% e
  38. input("")
复制代码

4 f3 A+ T! s1 v, f6 M1 A2 Z& o$ J' g7 Y3 }& l# q1 O8 S

7171_例2_五角星.zip

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

例2,源代码

admin 发表于 2021-5-30 23:13:15

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

7171_03.jpg
, D6 t. [- g7 N/ O6 ~/ D- l4 i: W% C/ D' {
例3:动态时钟效果图 如上所示 ↑↑↑; g; j! e: U" R" k

2 d) I, {% J& ~+ T5 [6 n

7171_例3_时钟.zip

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

例3,源代码

admin 发表于 2021-5-31 00:32:27
7171_04.jpg
2 S4 I& ?$ f  _( `2 x9 |; u; r例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

1234下一页
新大榭七周年,感谢由您!

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

GMT+8, 2025-11-30 17:33 , Processed in 0.104793 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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