新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

新大榭论坛 门户 查看主题

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

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

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

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

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

" p8 ]1 f! V) k1 S+ J8 d        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。+ x4 k3 P& F" D: b$ s# P' S9 V3 g
        设置画布大小

  n2 ?0 C/ j" C& s$ h
  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)4 _- |- m- z  k  T( G
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:
* |+ ~4 p" p- w0 X
  1. turtle.setup(width=0.6,height=0.6)0 @7 p( t9 y# y3 c2 `
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔

, ~( @. h) C: e5 C7 m$ ]) U2.1 画笔的状态
! Y/ X1 w) X% Q& m( S; }( Q  J        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。2 n) C; v4 O4 Z2 k1 J4 J
/ B' g  w( _) c, @3 T
2.2 画笔的属性" n  Z6 T' P# N/ j9 o
        画笔(画笔的属性,颜色、画线的宽度等)
" J. N1 V" X) v        1) turtle.pensize():设置画笔的宽度;( T2 p$ [7 ]8 [$ p# @$ T3 I3 S: N
        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
7 ^- v8 ?2 Z' |) ]        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越
% s! W& c$ K% r! U0 _
! q& G/ q# z) M6 S4 A3 U2.3 绘图命令: h0 [. ?; |+ _/ m% S) ]) X5 w
         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
, d4 k& B! @/ C1 U7 _$ M! S, C  p! {8 P! R2 ]+ c  Y
(1)    画笔运动命令
* |! V4 ~8 O* K5 ~+ D, ]2 `4 d: d
命令
说明
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)
绘制一个指定直径和颜色的圆点

' r5 X8 ^! ]. ]& A9 R(2)     画笔控制命令7 Z* Z0 b6 i5 r; Z& x8 W$ W

& p2 t& N+ b4 _& A; F; i
命令
说明
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形状

/ e- y& h% r0 p& @& q' ~8 l
; N9 p" M% b4 K+ X0 O( w(3)    全局控制命令
6 V$ r0 j. e& m- O2 v
7 G  [$ n% W( o$ p7 F+ m4 i3 u
命令
说明
turtle.clear()5 S. }& i& p5 V4 N& B0 E, C' E
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()
, ?0 L: Y3 Q2 A! \1 O; v& m$ E
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

5 y/ _- I& s: X* @$ m, N- R$ D3 w. n- ~& V/ y
(4)    其他命令
6 `3 |3 g2 P2 M) y+ S, A& J; I# ~
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数5 C" Y0 m4 h' G& z5 l
必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。
& D$ Z; Y7 I* k, d) X7 N
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针
$ u7 x6 d, ?# J
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()$ J2 |0 X! }+ m- Q2 C
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。

, T# \4 S1 K: X; y
3. 命令详解

) ^7 k) f5 L3 A9 n; `

& c2 p& @9 z0 v' F+ d, ]2 K
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆
. l9 f# `4 f! m5 u6 o: u6 A
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。

: E! l+ ~) u! }7 a" N7 B
       举例
  1. circle(50)          # 整圆
    & v( ]- w1 G) V- V  z
  2. circle(50,steps=3)  # 三角形
    $ R# `. q% ^2 u  F' L
  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
$ E$ ?2 E: X/ K. R2 u& D% g# k8 O& b% N4 U+ S, k+ a
例2:太阳花效果图 如上所示 ↑↑↑
) t* O3 A- H: O0 x
  1. # -*- coding: utf-8 -*-! q1 K) A0 z  \, a  y$ F* N
  2. """
    & n2 P% S5 ^! V: c
  3. @Team: 新大榭论坛( Y4 S* y3 M$ v+ w7 b2 K% S; W, t
  4. @Author: 张黎斌2 x! \( U: u0 L3 ]( {, Z2 x
  5. @update: 2021-08-01
    ) e  a( y7 k6 x, z) t/ Q
  6. @Version: v1.12 B  ]! U5 i9 Q0 g
  7. @BBSid: 7171-02-01
    9 ^& M7 ~8 P+ j8 [
  8. @Level: B# k! ?1 Q3 G2 |6 c3 m
  9. ---------------------------
    $ R; W" A9 }7 P) O/ T* \7 n
  10. 【turtle】实例2:太阳花8 e1 p& o  Q0 i- ~- _
  11. ---------------------------
    0 }" E9 O( M% ~0 |3 @1 r
  12. """
    # x3 B: \  Z' m; {1 j
  13. print("+----------------------------------------------------------+")2 c- x! A% s. ?. V
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")" ?" G" r1 v6 ]3 T6 M+ r$ `+ I
  15. print("+----------------------------------------------------------+")
    7 x0 y/ j  C# d3 S% i( U& Z
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")6 [8 y8 Z) q5 b% e& z+ |
  17. print("+----------------------------------------------------------+")
    + c: W% j/ |" q! d4 v
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")
    - c: B4 F' O# Q, K/ @3 n! Q
  19. print("+----------------------------------------------------------+")
    : W# D1 ^0 T/ n2 @6 H
  20. 5 Z& Z9 _7 m  }9 u" v
  21. # 以下为主程序核心代码 ↓↓↓) Y/ `" @1 T+ p$ U6 ?  `3 Q# b1 K

  22. * Y) p% r) S" C2 U" h
  23. import turtle3 |7 l( O6 a- U$ B! f
  24. import time
    & d7 K2 P  H) |
  25. 6 b! S4 ~2 c- l2 R1 E
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持' ~8 N& k$ I* V: ?

  27. , S1 n- H9 g4 y) A
  28. turtle.color("red","yellow")
    & g' I& P( m$ r) l  Q/ v
  29. 3 A" F/ @$ M/ A* z8 y$ [
  30. turtle.begin_fill()% g5 ^. t5 f8 q  ~7 E
  31. for _ in range(50):
    - O: |- G( M9 @$ ~( f
  32.     turtle.forward(200)
    - O( a' Z* S& [3 `$ d$ ^2 \* i
  33.     turtle.left(170)
    1 h6 j9 T9 M! c% h& d
  34.     turtle.end_fill()
    6 b7 g. I; b( U6 E

  35. 7 l; x# B' W* m( w) }0 k9 A+ S7 u
  36. turtle.hideturtle() 7 ~  _* r* D& b: o" @5 q
  37. ) C& d/ ~0 I1 I1 p( `" K' Y/ X
  38. turtle.mainloop()7 k% S' Q* r3 E! W
  39. / q, k4 k3 i# [* O1 A# k$ ]
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!. w4 E* H3 w" {! \
  41. $ l$ ?& s3 _, r6 E$ x" V: C
  42. print("┏----------------------------┓")
    ( O8 M2 c) X  f, ?' f( q
  43. print("┣--- 按下回车键即退出程序 ---┫")
    ! C! o4 [; p" \) J6 Q( ]
  44. print("┗----------------------------┛")
    ) o1 X6 g  m' R( {
  45. input(">>>")
复制代码

7171-02:太阳花.zip

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

源代码

admin 发表于 2021-5-30 23:09:15
7171_02.jpg $ d& I( {& H* O7 h; _4 s4 _" v

5 Q7 Y$ ?, V# @/ n. V! i: U例2:五角星效果图 如上所示 ↑↑↑% ^' C9 b1 |; k4 `

0 |, q$ S; D4 v+ ?4 ?8 E
  1. """9 H* {$ d6 ?, w, M3 }( l
  2. 7171《实例》 - 02 - 五角星& n# s# m( G, v4 O1 |) ^

  3. % m" E. j( z. p& f6 }' P
  4. Version: Python 3.x
    ; g8 n# k" I- g  q& E8 H$ }: I9 n
  5. Team: 新大榭
      @3 [* \0 W. |  o
  6. Author: 张黎斌
    6 M  R# o( p2 L
  7. update: 2021-05-30. j7 A1 P( T4 l( o
  8. Level: B* h/ L! j) k$ s) c! f6 s

  9. 7 n' D5 D: T% |
  10. """- i/ A. X# E- n, J. w2 O! f4 }
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")/ L" ^4 e  W' v7 G+ [8 J3 D4 N1 G; x

  12. : j) e4 Y9 y' S
  13. # 以下为主程序核心代码 ↓↓↓" o) f# d/ y9 H) G$ `: Q3 B

  14. 0 y& `" j% ~+ }. u, k( n  B) @/ Z
  15. # coding=utf-8; Z: i* V7 S/ B2 n: g
  16. import turtle" L4 i; K) _2 y7 b# S+ }
  17. import time" k/ M) v9 M5 e. O# K
  18. - r7 p/ K1 ?" ^( O; d# B; P+ H
  19. turtle.pensize(5)
    ( }6 R- W9 w! [' Z- W, w3 M
  20. turtle.pencolor("yellow")
    6 I+ d# n* Q' @* U
  21. turtle.fillcolor("red")1 ^1 z8 q* Q: e% C7 X% n

  22. ( l9 Y& L1 J. h' Z
  23. turtle.begin_fill()+ }$ m$ D' i4 g. q7 \0 @$ n
  24. for _ in range(5):
      H1 Y9 ]6 D8 u/ ^6 P
  25.     turtle.forward(200)
    # q  u+ i6 L% m( z" I  ~0 Y
  26.     turtle.right(144)9 z3 |- W/ L: f4 {! F4 Z
  27. turtle.end_fill()( T  P. F( \$ d7 @6 [) Z
  28. time.sleep(2)5 ~; \1 K8 n+ L+ }, s3 t

  29. 5 @) t# u# I. d4 m3 I) ^
  30. turtle.penup()/ I' D' O, R1 ~) ?, b
  31. turtle.goto(-150,-120)  `7 e9 G" x8 k4 \* D
  32. turtle.color("violet")
    " J, y9 n+ m% o, i' j) A. [: {( D
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
    ! C2 d) x# t( w4 x8 g- h" b: ^

  34. 4 V) n2 Z# D+ i& @$ o* n
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    6 b: X! ^4 m# b2 j7 w/ A3 J# f
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    ' d) q4 x  V& y: A3 f
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")" k3 J+ j# O5 n! R; Z
  38. input("")
复制代码
( f5 V) C% D! j, ]0 S6 W2 y
( T& w7 t3 V6 ?* Y3 ^

7171_例2_五角星.zip

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

例2,源代码

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

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

7171_03.jpg
" h. z# }# }/ _. G, ]5 I# u6 K# d: F, W) _  A) }9 T- r* Q* K" T
例3:动态时钟效果图 如上所示 ↑↑↑
( U# o7 |7 c1 G# N- N7 J$ P2 W0 F" o) [

7171_例3_时钟.zip

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

例3,源代码

admin 发表于 2021-5-31 00:32:27
7171_04.jpg
5 E! l/ e- j7 y9 d7 y: a7 V例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

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

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

GMT+8, 2025-7-2 15:01 , Processed in 0.085280 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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