新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

新大榭论坛 门户 查看主题

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

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

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

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

x
同学们欢迎来到 Python Turtle库专题微课学习!
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
turtle绘图的基础知识:
1. 画布(canvas)
. W3 f9 ?+ U! e
        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
/ ^7 y0 ]$ l1 Q; }% o$ `        设置画布大小
2 h  T4 ?( N, `2 P1 s
  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)% b3 f$ k1 ^* c% }& I* h, |
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:" L3 e" D9 t/ Y" ^- C) k- T7 O0 u
  1. turtle.setup(width=0.6,height=0.6)  Y& l2 e; v* P2 }# }
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔

3 q* u, J/ }2 T2.1 画笔的状态
" m: [) e7 O/ H7 \2 d        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
! w* |& M5 q" E' @; o7 A" |6 p/ I& L! H4 ~$ c
2.2 画笔的属性
7 t7 G9 n6 l1 R( Z+ n7 T" m        画笔(画笔的属性,颜色、画线的宽度等)( N, a1 G: E0 T" |. C0 F; [+ R2 ]
        1) turtle.pensize():设置画笔的宽度;
+ M4 i1 [' C/ U/ _% V% U% k# P        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。8 u  S3 L3 F+ T# T0 V
        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越
/ O& W. ?, @  t' ^  Z5 p1 g% n, t3 h. C8 c& w( y* U
2.3 绘图命令
+ [/ F& J7 j& ?4 F# B         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
& O! {& l9 a. D' G' I9 ]8 _0 g- h7 M3 K% b- w+ C( ^- ~
(1)    画笔运动命令
. a9 c9 A( C' K0 e- z8 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)
绘制一个指定直径和颜色的圆点

& O! C4 u8 h2 j(2)     画笔控制命令) s4 ^, }5 B0 ], Z& l/ V+ T
2 _( ?5 k7 h9 |# e$ P! d* E% Q/ b, V
命令
说明
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形状

4 w' T: ?' M* L- ]) u  R8 s# v% R* ~5 F0 s
(3)    全局控制命令
2 Y5 B* ~$ F7 x( {' N
$ A3 J3 W9 _- L% D- B
命令
说明
turtle.clear(); z1 f3 u5 f# k' h; T# i0 z
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()
& r; K4 W% s+ J$ \
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

7 X  z9 n7 M4 r, k) x' |3 c
* R& q; v3 v* F. m& l& I(4)    其他命令
! H- U) |: A1 \& @, F* V' k6 J6 G6 v9 R1 P( Z; G. y% @/ B# a
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数3 Y- g0 Y  P, |/ S
必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。
+ z! z( D5 Z( ~6 F5 H8 b$ {' j
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针

# l/ j! h: d% h' H+ I4 j
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()9 c* {: H% ~  z( P6 D  q
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。
# |: E$ W. a) N* E0 c0 N
3. 命令详解

6 b! L8 R  {9 m) q: t

4 i% \( |" w! e! Q' v
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆

  Q) D" y! a. Z* w' V- I
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。
' ^& j1 E8 \7 I$ N* x; R/ t
       举例
  1. circle(50)          # 整圆) h8 n! s! ~5 V4 s- C6 K5 k
  2. circle(50,steps=3)  # 三角形2 m* P3 m+ w1 b6 ~5 H* m
  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 1 n$ X1 [; ^% C4 }; q

/ C1 @3 b! o0 e1 n/ a# v例2:太阳花效果图 如上所示 ↑↑↑
* ?& v/ O  p' c* `/ L' e0 U% d
  1. # -*- coding: utf-8 -*-
    . q% m( S' [4 Z6 e
  2. """, ~+ O6 a, y6 h7 |- w0 u2 H5 [
  3. @Team: 新大榭论坛. X# L, P+ @: d4 S- `) m0 ]: E
  4. @Author: 张黎斌8 A( ^5 x7 m9 |4 ]- I$ H% Q) t
  5. @update: 2021-08-01
    ( ^2 X5 L9 m5 w' m% \4 @
  6. @Version: v1.1( [  X5 }  F) |. B: n7 I* V
  7. @BBSid: 7171-02-01
    ' f' N) q2 p1 f5 Q2 |. [- |
  8. @Level: B0 `0 O$ }: r0 [' y
  9. ---------------------------
    - }0 d8 G3 _. s  f; J
  10. 【turtle】实例2:太阳花
    6 K3 @/ i7 g) @  x- n; j& \
  11. ---------------------------0 Y* K+ L  C- {1 I9 K" A2 j( ?3 e0 v
  12. """
    5 T* g* ?  @* i7 p/ Q6 B
  13. print("+----------------------------------------------------------+")" Z" G5 o' _: W9 k/ I
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")& P0 u8 j  I1 p, E2 F. L" J
  15. print("+----------------------------------------------------------+")
    ) L; m9 b; d: {+ C4 @3 d
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")" L. A7 P# u+ N1 J6 O2 i# l3 d# ]
  17. print("+----------------------------------------------------------+")! ~9 l2 X4 U# }5 Q
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")) K3 Z5 ]" t/ T, R
  19. print("+----------------------------------------------------------+")
    6 r9 w4 x8 Q. g0 W' H6 B, l. N
  20. # o2 Y' b: c. x8 o0 Q; _. u
  21. # 以下为主程序核心代码 ↓↓↓
    9 ?1 u& k& g1 o$ l2 \9 t
  22. 5 Z7 b4 Y$ ^3 b, |; i6 e! K
  23. import turtle8 E  K+ F6 z" U6 l2 l$ z2 `% W
  24. import time+ r5 }2 s& N6 @; F5 p9 D

  25. $ y* q  f" ~0 E- t: }! C" `
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持0 q: D& I! s- u' C5 w
  27. $ {1 [, [. m$ q
  28. turtle.color("red","yellow")2 U6 h0 X8 ]9 g: G5 }
  29. : w9 L1 r+ u  }2 T
  30. turtle.begin_fill()" Y/ n: y8 r0 r6 ~3 P0 O
  31. for _ in range(50):
    7 b$ y1 d- z9 l% M
  32.     turtle.forward(200). T7 S- `3 w8 c* q. c
  33.     turtle.left(170)& o' C7 x* b( e
  34.     turtle.end_fill()
    * b9 r- }1 O7 [* B# i! X) V* J
  35. $ ~0 ]7 ^4 g1 \, G+ g
  36. turtle.hideturtle()
    5 g' }$ i0 Q9 t4 D% {6 T! x

  37. + U3 P+ E( e3 P% t% s7 b9 `
  38. turtle.mainloop()
    # V# [+ X- X( o" A5 Y! x

  39. $ ]( V! t. @2 k
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!4 n9 Z% K& t0 F5 E( i. B: i0 X& p0 m
  41. 3 [  H! O$ e* q: \1 S
  42. print("┏----------------------------┓")' d4 D, _& x+ k* I5 ~4 ~
  43. print("┣--- 按下回车键即退出程序 ---┫")
    5 @) J+ [2 l/ K( _5 ^: v
  44. print("┗----------------------------┛")
    0 g, r! V: N$ i$ s( A
  45. input(">>>")
复制代码

7171-02:太阳花.zip

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

源代码

admin 发表于 2021-5-30 23:09:15
7171_02.jpg : N* e! H, h: _  [3 K

# M9 T. _( A( S5 S+ v* z例2:五角星效果图 如上所示 ↑↑↑
, H9 [7 \% S2 q$ b5 }, `4 I
( p1 `8 _( w8 S" b4 X
  1. """
    5 N  R8 b! V  L( w7 E* @, o
  2. 7171《实例》 - 02 - 五角星
    2 L, W9 `  E  e9 l% w
  3. / @3 ^& S4 `- t4 X5 R% R4 g
  4. Version: Python 3.x
    $ x* z9 u+ q: I- T9 U1 L% l3 P
  5. Team: 新大榭) ~  {) N5 ]% k" v7 M8 {% h
  6. Author: 张黎斌
      }/ l3 q. j2 h" j4 C% E2 O! V$ Y
  7. update: 2021-05-30+ [+ F7 x) j7 z: S) ]3 h, N
  8. Level: B' D& p2 H& A4 v* N5 s3 N* V, e9 H! O

  9. 9 B8 O4 k' C* g. U* `
  10. """1 t4 h$ N3 b7 ^" K* q* b
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")( X! z1 z0 y* i, @

  12. 7 q6 }% K/ B6 u9 @
  13. # 以下为主程序核心代码 ↓↓↓
    ! r1 U  w4 W% Q/ o) e* Y

  14. + E1 z. L' Q4 _9 l9 i1 x
  15. # coding=utf-8
    0 Z3 I: S% ]6 u8 F: N/ M" O( Q
  16. import turtle
    * w5 h2 {7 e/ J6 ^: |: _
  17. import time( \$ x4 M0 a0 Y$ j: K7 ]$ X. q) q( E

  18. & w4 e7 v) Y$ d# a$ b; L
  19. turtle.pensize(5)
    3 p8 u% N0 j7 {6 P4 I( B
  20. turtle.pencolor("yellow")
    " _4 Q$ x# k- r  V- l
  21. turtle.fillcolor("red")
    # y5 ~0 R- e) [  o! \8 _& F6 Z5 b

  22. ! u- \% ~/ l" p% u0 X3 f. J, l
  23. turtle.begin_fill()! E" s. q0 ?$ D3 S: a
  24. for _ in range(5):$ z/ E* Y' k+ J8 V6 l; s. H
  25.     turtle.forward(200)! a/ c1 }, M$ T
  26.     turtle.right(144)& }/ w  N/ g4 ?( ?. s' G% t& c. i2 I
  27. turtle.end_fill()
    + |$ \  r0 }5 ?; f2 L; d( s, O
  28. time.sleep(2), a. i/ v1 Q. o/ ?  B6 |9 J' b
  29. " u' z* k6 R. n9 [9 V
  30. turtle.penup()
    & p  D: h& H7 e  U$ U
  31. turtle.goto(-150,-120)
    ) m) i+ \# M3 y. ]0 j4 {
  32. turtle.color("violet")! C% B6 }2 M6 }$ K$ V% z
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))( i% U, J1 b3 L0 ^5 D
  34. / i0 B0 }! S, A8 F& `
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    ' }$ u0 o8 ?1 x9 s' c/ |
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")$ \1 T' y- U$ M3 i& j2 t% x
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")! ?8 a' r- V; R1 I6 f' x
  38. input("")
复制代码
$ f" y) `2 @/ Y, T- y1 x
) b2 h# l6 ~8 n7 p

7171_例2_五角星.zip

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

例2,源代码

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

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

7171_03.jpg
0 `2 Z" N& }& Z# l( P% ^% A2 j! Z3 ~7 H. i7 P$ q9 Y9 B" n4 c+ `7 @
例3:动态时钟效果图 如上所示 ↑↑↑' D( t, [3 U& y$ S

0 Y; ~7 \" @( f( t# @

7171_例3_时钟.zip

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

例3,源代码

admin 发表于 2021-5-31 00:32:27
7171_04.jpg # N- `% b' F8 q
例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

1234下一页

浏览过的版块

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

GMT+8, 2026-7-12 18:15 , Processed in 0.083394 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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