新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 7137|回复: 18

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

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

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

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

x
同学们欢迎来到 Python Turtle库专题微课学习!
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
turtle绘图的基础知识:
1. 画布(canvas)
( U( [, S% S. y$ ?
        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。7 \3 @3 F* |) U5 e# d! d) C% C
        设置画布大小

. x) e3 S' l" X) d+ O+ e0 ~
  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 O" s  Y6 E9 [, j: J" l& \
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:' b( L0 ?% V& {0 }( ]
  1. turtle.setup(width=0.6,height=0.6)1 ^( h/ G. E: ]+ ]
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔
% j3 s, d2 f9 x: ^: h' b
2.1 画笔的状态9 @- f& t1 `; u) x
        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
* k) M" z# N1 P  j  c+ k, |; F' X0 G( e5 z2 O
2.2 画笔的属性3 M  V, ^! i' Z0 B9 u
        画笔(画笔的属性,颜色、画线的宽度等)* W4 Z* g4 y! N1 V2 ^8 a
        1) turtle.pensize():设置画笔的宽度;
* K6 D8 a) g; b" e6 Z: M4 u        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。9 L/ C9 x' ]! W4 e8 y& e1 i
        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越 ( b+ b- _4 R, w9 U* k3 B) j! R

: _5 U0 l) z3 q. G6 R+ W2.3 绘图命令( O# ?3 x  G( h7 W
         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
' B5 w6 `# J( B6 u% ~% Z
# q4 R1 z! N# ?(1)    画笔运动命令
& v& Z( o6 q+ [" h  ?
命令
说明
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)
绘制一个指定直径和颜色的圆点

. T1 g$ d" n# k! r(2)     画笔控制命令
3 E# M! D3 }$ x4 C3 v$ _7 h% ]7 f+ g
命令
说明
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形状

! L% \3 s) i% P: b& O5 B
, @9 m+ G- e3 B; S(3)    全局控制命令
: [8 s8 ], g- [- J1 Z; \" F! L
# T& ]3 Q& d5 D6 f
命令
说明
turtle.clear()
' [; ?* Y  n' V8 u: h
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()) e" J6 M4 [0 t4 B* K
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

9 p  T  v6 F: T: x' O( u
, B( S! x5 [  [& G& l3 ^(4)    其他命令  U- R' h  X  `" L% j) F+ S
' z  |7 F- t2 Z# L8 n" ]
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数
# \& c( ^+ q$ [  l5 @$ p必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。

3 q+ k& J+ L- L$ f4 B' Y
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针
1 k( r/ _/ R. d; z0 S2 v
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()& e* L1 {( S& \+ [7 h
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。
9 t1 M  _, w" Z+ E) |. d
3. 命令详解
+ f' Z& ?1 q! C) l# D0 d. f/ H- d
& p! ?+ ^4 ?3 O8 X4 x
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆
: \4 B+ G! F9 F4 z
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。

( k  e2 Q' V$ G8 y& P( Z
       举例
  1. circle(50)          # 整圆& b/ p# ]5 T6 O' Q  [
  2. circle(50,steps=3)  # 三角形( o; F+ \) }) E
  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 " d: p. c2 N4 ~6 n* p* J% E& C
' D1 C" v, u; G' ]9 d
例2:太阳花效果图 如上所示 ↑↑↑9 ?- h6 Q1 B4 I: A' d* |; o
  1. # -*- coding: utf-8 -*-
    9 j: K8 x+ z4 g  z: W; m
  2. """; Q; `, N( }4 W6 U' {
  3. @Team: 新大榭论坛
    ) B3 y# |6 \& F4 F3 ?
  4. @Author: 张黎斌
    5 r0 w; |% |1 D  ]4 n, C! J
  5. @update: 2021-08-01- K9 r+ p6 }1 F9 w, c5 _# h$ `
  6. @Version: v1.1
    6 P2 z( y: f2 }# {3 i, P( t
  7. @BBSid: 7171-02-01- L3 j4 B3 [: O; K8 s
  8. @Level: B% X4 f2 a! b6 _! s2 B# B0 R9 k0 B
  9. ---------------------------
    ; e: a6 f2 T; e1 J1 r
  10. 【turtle】实例2:太阳花
    7 |6 ?9 g% F/ E' H
  11. ---------------------------
    % r, Q; @9 Y: E( N+ F
  12. """
    0 k: u2 k( d- U- d
  13. print("+----------------------------------------------------------+")
    $ V: C" p% Q) ^3 N3 l, ]
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")
    + H' m4 W6 v' d
  15. print("+----------------------------------------------------------+")
    : @2 a+ e) U7 S) g$ l
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")# l% K8 G! _1 x" a+ u& P
  17. print("+----------------------------------------------------------+")
    $ f! ]3 X7 }: X$ U, F6 m, b
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")
      F! v1 l: f, J0 o
  19. print("+----------------------------------------------------------+")
    . z; l+ R, J( ^
  20. 4 R0 N+ v. l' k" B) d) V' d/ |2 Q( E
  21. # 以下为主程序核心代码 ↓↓↓
    1 ?& F, k$ D- ~! h5 K
  22. ( Q1 f7 i" R. b/ o4 e- U
  23. import turtle; I+ p1 N2 ^1 c( j9 w! `" P% w
  24. import time0 [) z4 Q5 n- N( I, H8 Z* x
  25. * G0 g( z: h3 |3 K$ y
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持
    $ j! f% b6 |+ U! Y
  27. ' _- D0 U( c/ Y3 {7 s" a
  28. turtle.color("red","yellow")+ u6 C3 v% Q8 e7 w4 C) M8 q& J0 @; E0 u
  29. 2 Z7 `8 x: C! i' M
  30. turtle.begin_fill()  i4 J& m) h, q5 }: I6 E/ Z3 A
  31. for _ in range(50):
    ; ^4 {8 n( W( B
  32.     turtle.forward(200)
    4 Z* k3 D) ^4 H9 {) R& v# e
  33.     turtle.left(170)
    1 ^, B, `9 [9 C, ?  K
  34.     turtle.end_fill()& E7 n* V$ v% P9 `$ t

  35. # E4 c( H% a+ W+ I
  36. turtle.hideturtle() ! d2 T- k0 g& J. ^3 V/ ?

  37. 4 |$ F: K2 X, b! L* k6 Y3 h
  38. turtle.mainloop()
    6 ~+ Q7 j% Z/ ^  Q( Q
  39. 7 s! l- Z; Q. {1 d. [3 W
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!6 Y$ Q: t! a) K/ \9 E
  41. 5 g1 v/ O: B) \8 i
  42. print("┏----------------------------┓")
    " b: {/ \  H, z
  43. print("┣--- 按下回车键即退出程序 ---┫")
    & C/ g1 w3 V* O6 v
  44. print("┗----------------------------┛")
    & K' ^- z; j0 L0 e
  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
( w. w. @2 K$ m0 T
0 o% I8 \/ D1 d) Q+ z" |例2:五角星效果图 如上所示 ↑↑↑
5 A* a+ z4 f- b4 S1 x9 X) G" h  H* _% k* R5 \" V
  1. """9 M+ R; `  l, E( {+ W
  2. 7171《实例》 - 02 - 五角星  {/ L! P+ r8 m5 I

  3. - p% A! Q8 T& U; |; F/ f) Z6 h3 \# o
  4. Version: Python 3.x
    & k1 F+ V2 i! \* T7 k4 z! _+ |, P
  5. Team: 新大榭
    0 f* ~1 \# C! `
  6. Author: 张黎斌' m; O1 p" R- }  h/ d" Y
  7. update: 2021-05-30) t+ \) R1 J6 o
  8. Level: B( V- c5 P) y4 ?8 c
  9. 1 E7 S$ v$ b; i. A3 B
  10. """6 }3 A& p; ?: Q+ e- C
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    5 I' U% a9 k: {% I  K8 X# t
  12. ; `0 n' E7 L+ a0 a
  13. # 以下为主程序核心代码 ↓↓↓
    2 H( ?" I& x& ?+ V. i, d
  14. $ O, ~, e4 g9 @0 o
  15. # coding=utf-8
    : K) [$ W7 g8 w
  16. import turtle* g2 F# p2 o% _) m* S
  17. import time$ M- D! L* o9 c( R2 E8 t
  18. # \. R4 O: h  a, K
  19. turtle.pensize(5)/ j9 u' P4 d, l; w# g
  20. turtle.pencolor("yellow")8 w7 ~. m1 H( C8 S4 b
  21. turtle.fillcolor("red")8 N. t& U3 s7 z  R' K% ]
  22. 2 t: n. |7 z+ n0 C
  23. turtle.begin_fill(), t; D9 ]% r- I
  24. for _ in range(5):; S' i- \: @, T- `4 u
  25.     turtle.forward(200)) x. F- c: i. P  d! X+ `
  26.     turtle.right(144)
      ]; }$ [8 @/ v; f* V, x' i
  27. turtle.end_fill(), z. d) L, T5 l2 u8 M& Y( p& d: _
  28. time.sleep(2)
    , i* Z0 I  I& _3 x' j! k. q! k# n) J

  29. + c/ |0 }  m, D: x
  30. turtle.penup()3 n. t' A3 g) k$ N* g
  31. turtle.goto(-150,-120)
    $ @0 I; B8 L; c) z* z
  32. turtle.color("violet")
    " P$ A0 ^( d0 S0 k  s' \
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
    # {% u" A/ G) G$ C( S

  34. 9 c, d5 Y0 ~9 f1 ~$ C$ @; }
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    / U, h; ]. }! p1 l
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")3 G9 C$ x+ O& `5 }  u! a" h, o9 J5 ~& m
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")
    / f* }" e1 H7 v; A
  38. input("")
复制代码
: ?; b2 x( y. q. o) e; j  C
7 M8 j9 a4 G8 S9 o& U* M2 ]

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 " x# K$ N' r; A7 C

  Q, t' O5 d7 d( Q# Z/ u; e例3:动态时钟效果图 如上所示 ↑↑↑
. F6 ^- J  O- [5 L9 s# m' f+ u' c; G5 l2 M1 a) s) o

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 3 E6 j  `* P! p5 [
例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

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

本版积分规则

新大榭七周年,感谢由您!

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

GMT+8, 2025-10-16 20:17 , Processed in 0.090615 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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