新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

新大榭论坛 门户 查看主题

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

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

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

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

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

' y, \2 D2 A6 @1 V% \6 N        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。/ }# M8 H/ ]" j4 G7 G3 P/ k' y
        设置画布大小

2 s. g( j4 u0 q+ }) O0 m
  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)
    % J7 W. f% z9 ^# o
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:* z0 w; y4 T4 w3 {$ `$ J
  1. turtle.setup(width=0.6,height=0.6)+ p5 b' [  B9 f8 c9 g& O
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔

: t6 S4 Z9 M9 h, l' n5 K' z+ h2.1 画笔的状态
+ `7 C0 v. V' R! ^. L9 @1 Q        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。4 }& m! g0 c4 P4 A
0 q# ~/ ?. A7 j4 V4 j
2.2 画笔的属性
/ x! D6 {$ H! m; q        画笔(画笔的属性,颜色、画线的宽度等)
- R4 |) O5 L+ Q9 C% q        1) turtle.pensize():设置画笔的宽度;* ?; [4 {5 C3 Z
        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
7 B( i7 o0 t; F. s: q. z4 Z        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越 6 l9 o8 U" r/ f- X, C! k, w1 U  O
5 `% c) I7 u# v
2.3 绘图命令
4 G. |) a4 z6 d3 X: z) T! N  N         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。  G- m. H8 `, y/ A
4 E& ]& l( {7 ~5 S7 d6 m: U, y3 D4 Y) }
(1)    画笔运动命令" S( J+ r: t; g1 V) Z
命令
说明
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)
绘制一个指定直径和颜色的圆点
# x3 r& f1 o0 G0 ^& D4 m" Y8 L$ _% ]1 t
(2)     画笔控制命令
7 R4 L. x/ m1 V9 d8 n5 D: _% d9 T% f3 I% U% T
命令
说明
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形状

$ R- N9 Q$ W1 l: W# g5 D: Z
: q" F. g6 o1 f+ S3 }& [0 h8 u(3)    全局控制命令2 d3 B) B# k5 |3 i4 y& C5 X
) b# ^- r& H) r- M+ k
命令
说明
turtle.clear()! N; ~. }0 e( l! w5 V/ d
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()7 ]+ @; y. U& G6 L; N, W5 A
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
" D: J$ m) z2 I2 z) j% [

+ U8 s( ~" ]" `9 J(4)    其他命令
, g; i7 {% C/ o* ]
+ g! c' ]+ n! u" o1 w
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数( }/ L$ z$ P) I* ^% T9 I
必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。

8 L' L4 w! m! |% d' q
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针

, @! N. j* \% a  i! s* P# s$ q4 U5 B, n
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()' N. a7 y5 j0 j) R! J" Y7 S
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。
) F. Y" Z! q  }# @' M2 Q
3. 命令详解
* C6 m4 i4 w, h3 X0 m6 t7 u6 @

1 G  I3 O# ?, H8 ~
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆

$ Y, Z! V' \5 S4 I
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。

6 S+ F0 H' [5 e( o: C" R# X* o* Y
       举例
  1. circle(50)          # 整圆
    ( e$ L! H4 z6 ^3 m
  2. circle(50,steps=3)  # 三角形( s5 W4 N" L+ F; v7 s4 |/ f: W
  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
$ h  Z" [0 o) B, _# V7 n6 C2 `, C5 w! a# t' L: G  h
例2:太阳花效果图 如上所示 ↑↑↑
8 \* H+ f5 B6 E7 R: X$ K2 X
  1. # -*- coding: utf-8 -*-
    . f6 K+ a& d* c3 `+ _# l$ l
  2. """, C4 {" e8 j0 t: I2 o+ P
  3. @Team: 新大榭论坛  D3 P: f' z2 f' \
  4. @Author: 张黎斌3 I$ D( _0 T1 V
  5. @update: 2021-08-01, t8 G3 G. i" W5 z7 b  ], a( A
  6. @Version: v1.1
    9 }6 @2 I# e" }9 r. ?" m: e
  7. @BBSid: 7171-02-019 |3 \$ V' F+ w& u  I  s+ J
  8. @Level: B1 @! v7 Y& |2 S  X2 _7 S
  9. ---------------------------
    2 V; O1 V0 c) V  {& T! w
  10. 【turtle】实例2:太阳花1 c8 W; ~8 _% {% J& z
  11. ---------------------------6 I- j0 R/ _4 X
  12. """
    : w' j" H) x" ~7 N( w6 i
  13. print("+----------------------------------------------------------+")& d4 R" ~: {# ]' s6 n' i
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")
      y* B5 j' g: @. B
  15. print("+----------------------------------------------------------+")
    ; C1 E7 s; A5 L( v, [
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ "): r( n% t  U* C# W/ k3 J
  17. print("+----------------------------------------------------------+")
    ( r+ [4 \+ O, ^, J6 v8 H& Z' B
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")! r* c( u  t0 l; s3 c0 C3 Q
  19. print("+----------------------------------------------------------+")! u3 m5 b) U1 T9 @, H$ F" u
  20. 5 R2 M8 I; x3 x- E9 T% Y$ F  w
  21. # 以下为主程序核心代码 ↓↓↓1 q. N, |) U& ^
  22. 6 A3 q; H( B0 ]8 d3 p* P
  23. import turtle* D- j/ U: z1 ^
  24. import time/ n  {- d3 k  Y; a; [7 w( x

  25. . E9 ^6 w1 h' c& u
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持
    ) F# H1 {% b9 t; D' y
  27. # u, X& }' }& u) b+ i
  28. turtle.color("red","yellow")( J# d7 ~! Q" H7 b5 f
  29. ) ^1 i/ {; S( ^+ v0 H/ t8 {5 [
  30. turtle.begin_fill()
    * N: v, \; M! d
  31. for _ in range(50):9 [. H0 B( J; ?$ {+ L
  32.     turtle.forward(200)1 ^: j* V# y2 r3 F- h7 R
  33.     turtle.left(170)
    ; K, s8 H: n( q: M
  34.     turtle.end_fill(). L) e" j, ]' @
  35. ; M6 s1 j' J9 t$ s) k; O8 r
  36. turtle.hideturtle() 5 t# Q$ N/ s, A) R% H3 J8 i

  37. 8 h$ P. w! ~" d7 C0 ]- v2 v
  38. turtle.mainloop()5 e8 ~* T5 V0 Q
  39. % A2 A! C0 p" I  R. _, B
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!
    3 G, h* H9 ]4 c) L6 W3 t

  41. # @) ]7 A! ~3 R1 A% h% @( ^
  42. print("┏----------------------------┓")
    2 _# z% F0 a+ L, c/ G7 t
  43. print("┣--- 按下回车键即退出程序 ---┫"). t  f" d; z3 u5 O, K. L
  44. print("┗----------------------------┛")
    0 J+ l7 N$ p0 W5 \7 T% b- L$ p
  45. input(">>>")
复制代码

7171-02:太阳花.zip

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

源代码

admin 发表于 2021-5-30 23:09:15
7171_02.jpg   {* V& x" u: y5 N2 S4 s
! |1 [( ?1 j  v! U- e
例2:五角星效果图 如上所示 ↑↑↑
: O9 J. _6 v! Y  |& h8 d; e; I% ^( Q1 w. p; E
  1. """
    5 L# Z5 o  ]1 ~6 I% a/ F. ?( ^
  2. 7171《实例》 - 02 - 五角星: w, ]. ]- Q/ P9 \! O/ W7 c3 f
  3. / Z& A6 f' p5 `
  4. Version: Python 3.x
    % u. e- O. a9 h- _  W  ]
  5. Team: 新大榭  N; H% w+ S  L" @* d$ |8 A/ V
  6. Author: 张黎斌
    $ C6 F8 T8 p. L3 ]6 t
  7. update: 2021-05-30
    ; n1 v+ y, r: a, y( @5 v" x3 K4 S, `+ J
  8. Level: B7 i' G) |0 r+ Y' G! j
  9. , U: _: {! R  k5 `
  10. """3 N* b  G: I& j! L" U3 X
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    . Y1 z7 O3 u' c# Q  F) ]) m! q5 q

  12. & u, Y- B& [4 P0 b& r7 [
  13. # 以下为主程序核心代码 ↓↓↓
    , P  w% q) v+ o+ ]* E
  14. # I: T4 i. s; i4 R4 ?7 B* F; f
  15. # coding=utf-8
    & E% Q* v/ B4 x4 Q
  16. import turtle6 [3 j/ N4 h: h4 }2 g7 |# v! y3 T' E
  17. import time
    $ R6 C- w8 i) p0 p9 n
  18. 6 S* S; Z. u# z0 B8 ~# A+ b* r
  19. turtle.pensize(5)/ y! ^, Q) x1 R1 z3 w9 W/ @8 ]
  20. turtle.pencolor("yellow")3 x' s% \& Q# ~9 o
  21. turtle.fillcolor("red"), A. D' @; |% t7 J
  22. 3 j& T& X- }1 q
  23. turtle.begin_fill()
    ! E  D8 M1 A  @* p$ Z3 A
  24. for _ in range(5):
    ; m+ o/ K( x- v. Y" w0 s- F
  25.     turtle.forward(200)) e/ D! e9 n$ a
  26.     turtle.right(144)
      `. a5 B% U0 m. ~( \
  27. turtle.end_fill()1 Y# F9 K' Q" \5 U% y! s
  28. time.sleep(2)
    % j, z" ]* _  N0 A9 j' ^, X

  29. & J" ]  R5 I7 s0 {7 F( g! W
  30. turtle.penup()
    6 u! S( Z4 h, `6 u. i4 E
  31. turtle.goto(-150,-120)
    : ^& j6 m% r* W! D- s
  32. turtle.color("violet")
    * y# Q# W" {. w6 Y
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
      N8 F( Z* N2 e$ Y" N/ L
  34. 7 a8 z+ n* ?- G
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!7 I& T. K7 T. L" y) h$ @
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    # t2 k! f9 J2 ?9 R8 j' v: b
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")6 `' z- Z, R0 B; V; Z( b6 h$ a
  38. input("")
复制代码

7 i" f" Z$ s" S* |: q3 }
# o: o. U2 \+ ]; T. b' [( B& E

7171_例2_五角星.zip

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

例2,源代码

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

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

7171_03.jpg   C1 `! W. E% N3 {& h1 ^
" o/ K, [. G  Z" [' D4 W
例3:动态时钟效果图 如上所示 ↑↑↑
# M5 v1 g, ~5 k8 \/ U' {6 {
+ R8 l4 w* a4 D" u7 u8 R

7171_例3_时钟.zip

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

例3,源代码

admin 发表于 2021-5-31 00:32:27
7171_04.jpg / N1 ]1 z6 _; O$ ?- D* O
例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

1234下一页

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

GMT+8, 2026-8-26 21:32 , Processed in 0.085067 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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