新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 7635|回复: 18

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

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

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

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

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

) C; A1 ]* S! Y% ?0 D        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
$ _5 I) U( p, }        设置画布大小

4 V1 i* |5 g' b1 g9 l1 E
  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)5 [* ]8 N$ p/ a9 k, k& d
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:
8 Y/ s# F, ], ~4 o
  1. turtle.setup(width=0.6,height=0.6)6 _9 q" e* }/ ~3 x1 _
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔

: N2 q* I' W' t; j1 [' R2.1 画笔的状态
  ^1 K4 s  s' A2 f        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。0 s9 l! a: ~  Y/ B- v: n
# |% m: a- [# G( l& h
2.2 画笔的属性8 M& N8 Q% N9 x; A
        画笔(画笔的属性,颜色、画线的宽度等)
; f9 r$ r6 h- `" S2 C        1) turtle.pensize():设置画笔的宽度;; k7 ^+ R9 G3 T& Q4 X. q! F, s: r, {
        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
! S7 S# f7 @5 |7 }# Z* g        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越
6 r0 \- i1 w- m, ?' s7 M- w5 e; M  t1 F& a
2.3 绘图命令
, D' Y6 h; ]: b. w0 t# Y% O         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
5 Y/ R4 d. G  A1 T, |. p! M* N! q( f6 x
(1)    画笔运动命令
, r* L" c0 F+ W  L5 P7 A* K
命令
说明
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)
绘制一个指定直径和颜色的圆点
+ t& g/ V- E7 [5 a* Y7 a5 f
(2)     画笔控制命令& e3 Z( t+ O$ {: f
4 {) ?% y" z1 v0 l  v! {' W3 u
命令
说明
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形状

! S% {7 ~& e) y# E( }+ o- Q7 g0 g/ V. f9 E; J- e6 ~! h
(3)    全局控制命令
4 V$ x. S, w0 T2 b; o0 l% ?) u, r. F( n4 Q5 f1 _" z6 p& Z; L
命令
说明
turtle.clear()5 C; W( x9 ]' |+ @0 u
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()& a/ a+ r; d# m) ~% K
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
/ M0 G( z: A5 c/ c( R

: Z6 p! h; d% s' ?2 V(4)    其他命令2 a. U  R0 c. N! `: v2 U
+ @9 H3 n2 r' T0 \7 v- l
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数! Y' }4 g3 N! F
必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。

: h! K9 }) x1 r5 l" m6 n& |6 M
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针

; n5 \1 J5 {/ Q& h- }* T( m& Q( V
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()
9 b0 m3 n, K! A6 r' f
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。

0 }, J9 g" D% o. P
3. 命令详解
1 M6 e7 t7 D+ V' l: B$ X

, p" K4 I+ j9 L) k6 a
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆
3 Y* y0 s1 r) [9 P/ N, m" h
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。
  j7 }; a* \; r7 ]
       举例
  1. circle(50)          # 整圆
    6 ?4 J1 J$ q+ r' j% ^/ S
  2. circle(50,steps=3)  # 三角形) j1 i' O( j% O1 R. ]
  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
/ d0 p6 s! f* j( k- [, o: G( j
例2:太阳花效果图 如上所示 ↑↑↑
& a& A5 d- z  n9 F! L
  1. # -*- coding: utf-8 -*-
      u8 c2 X' b' b3 M/ v
  2. """5 a- s4 c! G) P2 W0 m& ^
  3. @Team: 新大榭论坛/ Y4 Y5 w3 \3 G. g
  4. @Author: 张黎斌( C5 w8 I& r, L- H  j4 f
  5. @update: 2021-08-01
    ' B. |( f9 [; m9 F: m
  6. @Version: v1.1
    8 \) d: }" D' V, o5 p6 D
  7. @BBSid: 7171-02-017 _) a- [( c, ^/ J/ W8 h8 N5 S
  8. @Level: B
    # V4 E% g% z. y# @8 x( L) B
  9. ---------------------------
    / h8 K$ ^& j9 C
  10. 【turtle】实例2:太阳花
    ( M! z, W% z1 R) k4 J  z3 ^6 h
  11. ---------------------------
    9 a* v% l* J: g
  12. """. }2 a8 D  a# w' m1 h! U
  13. print("+----------------------------------------------------------+")9 N8 [# S3 @$ M, K# o. S
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")+ I" }! t* F4 F3 K
  15. print("+----------------------------------------------------------+")! o- Z+ ~/ l) ^' h5 l7 [
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")2 v1 ^) [, h3 Y; S2 I8 x; ?( p& l
  17. print("+----------------------------------------------------------+")# A, L2 T- I, D% A; H- f0 a
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")
    6 Z! V8 A  @# h: a' b) ?2 R
  19. print("+----------------------------------------------------------+")
    : |8 @$ W2 |, R8 M6 f1 L

  20. 8 X3 r! r3 m: X0 M+ R
  21. # 以下为主程序核心代码 ↓↓↓
    7 t& R6 v- y' W8 {7 A; X3 ~

  22. , }! S1 Z% F: M' h4 b" W
  23. import turtle9 Y- w. {+ ]# _. Z- R( t
  24. import time
    3 u% W: j7 a$ }! @& ^
  25. ; J- ?2 m9 {8 k  z3 @
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持
    + }$ L4 s9 `+ R* W8 p
  27. 1 _# t% e! e1 B' p  k
  28. turtle.color("red","yellow"); u- D+ m( M# M' E& d
  29. - w. m$ [' F" U  |% Q( v+ l" u
  30. turtle.begin_fill()
    ( N/ @% W0 _% M8 }5 |
  31. for _ in range(50):; i$ U4 M2 X3 B9 j& Y  \
  32.     turtle.forward(200)
      @! D( b& y" L3 n! W7 d6 F5 J) M4 i; V
  33.     turtle.left(170)& p4 G3 k2 e: R0 x3 s  J4 e& R5 S
  34.     turtle.end_fill()
    ) o2 H) i0 Y8 y8 K+ e. }% j2 {

  35. 2 }9 C9 ~- [- b# K
  36. turtle.hideturtle()
    6 C& i1 z' ^  W3 c9 i
  37. ! k) F  K; ^% F
  38. turtle.mainloop()
    3 u( E# i1 a4 {3 G/ ^
  39. : W" Y" L+ Q$ l6 I0 S4 v+ h3 N
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!
    4 W- H1 k# ]6 b6 f' E
  41.   O9 o& [6 p, W8 A
  42. print("┏----------------------------┓")7 a% k- H7 L" g/ i3 Y
  43. print("┣--- 按下回车键即退出程序 ---┫")
    % p+ E( Y. K; d& [
  44. print("┗----------------------------┛") ; G/ O! x( {6 l! I$ g' l
  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
4 m! `- T9 I# P0 c, Q8 X$ v, f, O+ Z
例2:五角星效果图 如上所示 ↑↑↑
2 S. e$ N6 D; i% B2 o$ |; f( ^  w: C8 j6 a
  1. """, v! N8 a5 w( e- U/ C7 I
  2. 7171《实例》 - 02 - 五角星% J/ v4 R; @$ d$ g1 f) @; X8 a3 s0 T

  3. 7 Y3 \8 j( a  \
  4. Version: Python 3.x
    & X+ {  z' \5 }4 x( H( O  ]
  5. Team: 新大榭( j' v8 D( ?' S: j
  6. Author: 张黎斌
    6 r1 M  ^* S- ?9 S$ Z* u
  7. update: 2021-05-30" I0 y! V  _# r! L; l5 U
  8. Level: B) a) r! ~6 L- @2 |5 V0 \1 L

  9. 0 j# N% M9 s9 @7 i/ k
  10. """
    " m; J  n3 I2 {  b$ Z
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    % K& _4 k* u% `  f
  12. 5 w& U8 c/ P  N
  13. # 以下为主程序核心代码 ↓↓↓+ `3 Z4 R* h' z% e* b- N3 E  ?2 u8 p! y

  14. ! y+ O; k% }; K$ N
  15. # coding=utf-8
    5 P. v" ^$ u3 [) M9 t3 j  J
  16. import turtle
    4 A  h' p+ J! `- p1 _/ {* ~
  17. import time( [3 }: J0 U. [% x6 K' a4 F4 }' _

  18. 1 e% w8 ^& s# i$ c  r6 `& h; k
  19. turtle.pensize(5)
    * I1 l% l# C9 ?; _
  20. turtle.pencolor("yellow")0 C. ^  x. N# R, d) o
  21. turtle.fillcolor("red")- Y7 {& `  z$ W: ]5 }/ r
  22. ! z6 w8 h" K. e, x2 z% G
  23. turtle.begin_fill()
    " }! s' Z8 {) Z* p3 f7 U
  24. for _ in range(5):
    6 |/ B) S7 i0 P' e
  25.     turtle.forward(200)% ^! ]0 L# u  m% p. B3 d& k5 |
  26.     turtle.right(144)
    5 u2 ]9 p. U0 h4 N( `
  27. turtle.end_fill()4 q, R" ^1 X5 X0 n' Q/ a
  28. time.sleep(2)
      L2 [) p/ A  M8 l6 F0 i% s
  29. 9 S# x  c9 ?# t" ]" E8 o
  30. turtle.penup()# S2 t4 u2 t1 z3 L, A9 O
  31. turtle.goto(-150,-120)
    & S: ^) E. K8 M+ X5 V" p" F
  32. turtle.color("violet")" x8 a5 z4 V- L
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
    ( R, ~3 Y7 J) x1 ^  b7 h

  34. ! j& O! d& y+ B; s/ ^4 ^
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    6 _0 i8 O1 I7 y" \3 ?( b# C1 ~1 p/ a" s
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    6 u7 u1 |) \, R
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")
    * |2 H; r: R8 {7 O
  38. input("")
复制代码

* q5 l" T1 ^2 H6 d6 e4 Q8 K/ @( v# ~1 F0 G

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
% i- A2 h5 w# g) q3 F% C8 A5 ~& K' \+ V8 P. I5 n5 o% Q
例3:动态时钟效果图 如上所示 ↑↑↑! y' E, O# N4 u% J8 S# v/ D
0 Y( B  A9 r- a8 N* S4 W! @# F  S

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 ( n- a/ k/ J% F1 b
例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

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

本版积分规则

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

GMT+8, 2026-4-3 22:22 , Processed in 0.088100 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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