新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

新大榭论坛 门户 查看主题

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

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

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

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

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

% O; f; \, y- e$ H- D        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。( T  L. n' H, d
        设置画布大小
' _8 K& g3 T/ m& N# v$ r
  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 i2 o1 h2 |& j0 F( z  a
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:
9 _3 W! w0 @+ ]4 ?5 o7 m$ g
  1. turtle.setup(width=0.6,height=0.6)9 }3 b9 }- I$ w# k$ Y: y3 c8 j
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔
2 j, _& C" c" f
2.1 画笔的状态  ?- ~5 f3 m- L/ R8 D
        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。8 A) t+ u; R1 Y2 s2 A9 }5 W1 J

/ t! L0 o! G- r5 R+ d9 c$ _& y5 I2.2 画笔的属性
4 J3 U* b2 {3 Q4 W. Z/ q        画笔(画笔的属性,颜色、画线的宽度等)
1 Y* B5 i# M  E' o( r$ m4 w        1) turtle.pensize():设置画笔的宽度;
7 x" _+ h+ D; U. @        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
0 f+ v0 R; W1 O7 P        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越 ! j3 z8 z3 V) [, \
  p: V( K2 r9 o
2.3 绘图命令9 D$ J7 a# O1 f: m3 j' ^
         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。; M" D9 E* h4 t' M. j
& [/ {/ {/ t# @1 x% ?3 m
(1)    画笔运动命令! V* l/ y0 e7 U/ I# C9 }* 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)
绘制一个指定直径和颜色的圆点
0 [0 c+ m/ N2 j; l
(2)     画笔控制命令5 `3 t; k2 F5 ^3 Z- k; v- {
! A7 r3 v% {3 C( Q7 `/ q1 E
命令
说明
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形状
2 q! V+ w( T( }
6 {0 r1 \4 z3 `$ D/ g
(3)    全局控制命令8 G( {2 V" Y8 V1 o, n( K# ]
# e5 Q+ L4 a. R5 e' F: P
命令
说明
turtle.clear()0 o, ~* E! H, z% x  [: f
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()
# l5 K3 `5 M* i6 f4 x1 c: O
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
. p9 I: V5 a8 h5 K
- n! F9 c, I- H: I- ]; F" _% e8 H
(4)    其他命令: t, b7 y! y3 A9 O
* O3 Y& W/ U4 a- B
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数! q$ a/ V% J7 N8 `
必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。

. Q% h" e' {( i0 \3 O) a3 |
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针
/ [1 B7 w& [" H1 V. h
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly(). A4 ^6 a- Z. t5 \# s
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。

/ M$ U, K* O+ C' h: ~$ \
3. 命令详解
: |7 r/ y7 W  K) K& e
; K4 W; d, w  c6 E/ p' v& G
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆
  A" K9 x/ P" E! H
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。

* H+ J& c# f0 o2 J' ^
       举例
  1. circle(50)          # 整圆  C, T7 U3 h1 h7 F- ]
  2. circle(50,steps=3)  # 三角形1 i3 p( L; i8 K. k0 }3 n. F  o
  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
6 ~- V+ x! P# A2 |0 u7 G
: R8 z/ f+ I1 @8 M8 e例2:太阳花效果图 如上所示 ↑↑↑
% T+ v, ?+ o; h% G
  1. # -*- coding: utf-8 -*-
      E) t! x) s  u. I- z! k3 K% v
  2. """
      ]: |% S1 }+ e2 q1 w$ ]) I
  3. @Team: 新大榭论坛
    ( s9 B1 ~% @, T  o, w% s
  4. @Author: 张黎斌( v9 G& w* F# h& |, b
  5. @update: 2021-08-01
    . }" w( v; j# Y/ B1 l3 U
  6. @Version: v1.1
    : H  T% x) T9 M/ y* m2 G
  7. @BBSid: 7171-02-01
    + v1 Y& P. ], l' E
  8. @Level: B0 Q6 o5 f* ?" E5 S# r( i
  9. ---------------------------
    , u! ^/ @& v( _. E
  10. 【turtle】实例2:太阳花
    . n  L* q) ^/ {
  11. ---------------------------
      K! O2 \7 p" R$ \8 A# z
  12. """6 {8 f4 O7 j; x. W
  13. print("+----------------------------------------------------------+")
    , z. e& P4 D4 q3 D# \
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")+ u+ @+ v1 @- A4 r& X1 }3 d' U
  15. print("+----------------------------------------------------------+")
    3 z- _* I: K' ?5 U
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")& G6 w: `6 n& M
  17. print("+----------------------------------------------------------+")
    ( j, }" I7 D. y2 c- O$ D( U
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")
    & T% v+ B  U4 x; M
  19. print("+----------------------------------------------------------+")5 \# O, H/ l! q$ C

  20. & K9 _& ]! [# W# f" K8 O6 Y5 @
  21. # 以下为主程序核心代码 ↓↓↓8 c; a+ K! a: M2 I, n# I
  22. 7 H3 s, l5 \5 L. Y6 u9 l$ v( U
  23. import turtle; k$ c6 y7 P4 s( F# i$ p- j
  24. import time9 C3 L  `! ?, m
  25. , f  d, A9 ?# ?; l
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持) Z- H. [% J4 m: b
  27. * N( }- H' i: W6 {! `
  28. turtle.color("red","yellow")' g6 c; B- b2 B" K/ |6 ^' a; |# a
  29. ( p( q' w9 l% F& o( K- O3 W
  30. turtle.begin_fill()
    % W0 j/ N! M* q" u& \5 [& m0 S
  31. for _ in range(50):
    9 m1 W" t: @; Q4 D* p1 Q
  32.     turtle.forward(200)
    " P% C0 g0 B3 K4 Q. }. n' F
  33.     turtle.left(170)
    ; o7 A2 f- t3 s9 }! l
  34.     turtle.end_fill()
    ' A) L' W5 b& C4 u( t
  35. % S5 _; \6 Y3 _+ J0 p7 n# D+ T% ^
  36. turtle.hideturtle() 5 G! v+ n6 ~: T3 K' R

  37. 1 G  R9 F: D* x
  38. turtle.mainloop()1 D* R" C9 ]; F, k
  39. - A  R( z. Z8 Z
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!
    4 D; z, ]  v6 J7 s' j9 p
  41. ( m$ S: O; c7 P
  42. print("┏----------------------------┓")2 Z3 A+ z, P6 Y8 _
  43. print("┣--- 按下回车键即退出程序 ---┫")
    4 f3 ]6 r* n) |$ A9 N# I4 c
  44. print("┗----------------------------┛") $ F8 X. M' D% P6 o( {% F8 U0 t/ I
  45. input(">>>")
复制代码

7171-02:太阳花.zip

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

源代码

admin 发表于 2021-5-30 23:09:15
7171_02.jpg   g! \/ Z+ v5 G0 h: X/ D5 ^
* ?- A  v8 N# d
例2:五角星效果图 如上所示 ↑↑↑6 Q* S) r' K, ]3 l, E: ?3 c
* r5 Z- u# U6 w% P+ |
  1. """
    2 x  @! c, d* j7 A) y
  2. 7171《实例》 - 02 - 五角星, @* L9 G1 k" y! v' u$ N4 Q6 M
  3. - Q0 U0 a* B4 v9 B* r) C
  4. Version: Python 3.x
    $ @( N' P; h3 X2 h! [0 v
  5. Team: 新大榭. n% V( P2 s9 _( o3 S
  6. Author: 张黎斌
    5 G9 Y5 U, o9 E# a4 W1 z
  7. update: 2021-05-30
    9 _/ U: `0 h, U* [( Q
  8. Level: B! U; ~/ z! R; P$ q3 Z- [
  9. " w2 s' h7 T' v' w1 d' x# ~8 `' d5 `
  10. """
    ( V9 ?" k, \. H+ ?- X
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    # c( s/ _: l' s+ ^
  12. 9 p) R) z* [1 O. K6 T
  13. # 以下为主程序核心代码 ↓↓↓3 a8 T' A, h% Z; h+ l' Z% I

  14. $ q7 V( ?: d+ g& A
  15. # coding=utf-8; j' ?2 j7 Y  g* t: Y8 ]% ^9 E: j
  16. import turtle
    ; A  e, c% F, k* C' B
  17. import time# Z, s% }4 g; \9 }

  18. & _7 M$ x" E; v9 d( {/ ^, e
  19. turtle.pensize(5)
    6 E" _% c: j* \' V, W! q: T3 y
  20. turtle.pencolor("yellow")
    9 J! F/ h, M9 u9 l  @/ _
  21. turtle.fillcolor("red")/ J  `) `9 `7 e& I2 o4 t
  22. + }  i, F3 S; }" h# w
  23. turtle.begin_fill()0 F1 g" L% O+ B8 C2 ^& t
  24. for _ in range(5):
    , C; [& q4 w5 x; w' c* w
  25.     turtle.forward(200)
    $ u  q) B0 w8 E9 H1 f
  26.     turtle.right(144)
    0 ?1 Z" ^  q! H3 |
  27. turtle.end_fill()- m5 y9 C+ V0 x
  28. time.sleep(2)- [9 r  x% F6 s, [& C( g

  29. 7 I9 ~$ r* f1 ?3 T) v, w; R' M
  30. turtle.penup()" n9 \& B+ j; q" f
  31. turtle.goto(-150,-120)- m  M: f; {5 y& S0 j. v3 p2 l$ Y
  32. turtle.color("violet")
    ( G0 i' h# m, l9 c+ T& h; q, u
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
    7 N& }1 p. T% R) i
  34. 9 b+ q$ O, {6 z' ]# e; X7 [
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    2 p% q, V2 Z( G% K: v
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")* m  D! g" @9 ~6 M: i
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")
    . o/ z  t2 a& A. u: M9 i* P
  38. input("")
复制代码
5 Y# ]( g7 t" Y4 B; I
. r, K8 P9 I$ i$ t3 K+ o5 F! D5 ^; A4 g

7171_例2_五角星.zip

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

例2,源代码

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

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

7171_03.jpg & P# [1 F9 T8 F8 O4 t9 L9 M

9 [& K4 }- n/ s- j4 `, y  o) }/ }例3:动态时钟效果图 如上所示 ↑↑↑9 t' _9 u  {  X1 V" C. _4 Q, E) E
: h4 d! ^  _% {/ m1 W$ {

7171_例3_时钟.zip

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

例3,源代码

admin 发表于 2021-5-31 00:32:27
7171_04.jpg
  I- E+ u: b. Y- o例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

1234下一页

浏览过的版块

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

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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