新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

新大榭论坛 门户 查看主题

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

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

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

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

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

* z  i5 Y5 v  X0 L7 A$ b8 R        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。* L+ d' [/ L/ Z: I/ ^1 c
        设置画布大小

+ p6 P9 Z! H* w, e$ p
  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)
    $ M9 I7 m2 |2 Z7 n( L
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:$ W2 w% b; V* @9 n
  1. turtle.setup(width=0.6,height=0.6)4 A7 H) t' V3 }; m' d! [
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔

! A9 X6 i$ \4 c* Y2.1 画笔的状态3 j4 r) J8 X1 s) q
        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
% s2 k; R- e0 w; P6 a! d5 i1 C
+ J/ g& m: [# W) P% h& y9 g4 A2.2 画笔的属性( v6 {* j3 A, _2 u( p- ^
        画笔(画笔的属性,颜色、画线的宽度等); X8 [6 o2 x% N1 x( _! [
        1) turtle.pensize():设置画笔的宽度;3 {6 I$ e1 y$ e0 F1 w
        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。7 w1 W: {7 ~7 e8 W8 Q1 X9 S, M' w
        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越 6 l7 G# q6 N: P
, g6 R9 y7 m  m$ W( K; g
2.3 绘图命令. b( l1 w0 r; T
         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。5 f! J9 Y6 ^+ c& ?' s* {. x

* h# S- X& G8 N- h9 a(1)    画笔运动命令6 V: `8 R; w2 T
命令
说明
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)
绘制一个指定直径和颜色的圆点

; d) V8 D5 l8 `8 i2 ?(2)     画笔控制命令
; @& }$ x, H/ O8 O6 i# Q9 o/ |5 L4 k1 N0 M. o9 W' X
命令
说明
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形状

5 k* t8 j( P; K" c+ r+ A& n$ K. H1 Z2 p( `3 I! U5 h8 ^  {  @
(3)    全局控制命令. h, `; v1 @; h3 Y6 G
. g) ]% L9 @! p/ E. U. ~
命令
说明
turtle.clear()
/ K7 L+ k8 _7 ], _  q
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible()
* G, P( U+ x* d! ?; M4 g
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

2 }. F& y2 h. l; Y: F& j
6 x7 o4 G) x0 U% t4 B+ w1 P(4)    其他命令# ~3 F" v6 u; w- ~, `/ R3 B' |  T
/ q1 Z' C* j) n* W, \
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数
: \% g3 t- g3 Q/ r) D0 H. J: r( b) _必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。

9 o$ b1 |% @# ?; X
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针

4 }, ]" W/ X" V2 {5 L1 t
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()9 m; Q' p3 x! t* b; K  u8 ^/ Q9 m
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。

' k1 Q/ T1 M+ z6 J+ k, q
3. 命令详解
. M& O7 H2 Q0 U! K0 v* P9 E+ t4 Z

; w5 W$ C) n) o3 I; J
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆

% h1 ]* N% B, c- u; P0 `( C) l
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。
; _8 f' ~; H! o; C- D3 D3 _+ l
       举例
  1. circle(50)          # 整圆
    ( X2 }8 l( b0 n( e
  2. circle(50,steps=3)  # 三角形) j: ^4 l6 I4 o5 Y
  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 ( S3 ]( W9 P" ?6 k1 O

8 Z% ^) K9 E( _4 b' f- f- O- S例2:太阳花效果图 如上所示 ↑↑↑
0 t* Y: |- B$ W! @8 R6 ]8 L
  1. # -*- coding: utf-8 -*-
    $ @, E" K7 S# @
  2. """9 f) K# g8 q3 k9 g. W
  3. @Team: 新大榭论坛
    . Y. X, C) {2 l  [! _& U
  4. @Author: 张黎斌
    ( U3 |5 K/ \+ a$ i; j1 e: n" X
  5. @update: 2021-08-01
    ; Z- r( R$ ?" @9 P) m9 V$ u/ n
  6. @Version: v1.1; Q# I- w) e5 Z, c
  7. @BBSid: 7171-02-01
    2 l1 U7 t2 O3 x5 Z( f0 c% i
  8. @Level: B" [3 T; C8 S& R
  9. ---------------------------
    & H8 h* v7 ~! D0 M6 x
  10. 【turtle】实例2:太阳花
    ) Y% r+ `* B4 L" r+ e1 N3 v. M, D
  11. ---------------------------8 i8 y. A9 \; s. e& ?8 G
  12. """& ]* z0 N, {. a) p" D
  13. print("+----------------------------------------------------------+")! W3 L8 s' N; i9 N) N+ @% x
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")
    & v) [6 X! X4 A: }
  15. print("+----------------------------------------------------------+")
    7 H1 V" o0 v, u! L- L, B
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")
    ! J/ `$ C$ v$ v  ^2 w
  17. print("+----------------------------------------------------------+")
    ' z  B$ i6 ~8 G$ d$ C
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")
    2 u; O9 x* f' E
  19. print("+----------------------------------------------------------+")
    ' g1 F0 z! P+ m/ d* B* M5 p- N
  20. 8 _' x% ~! `8 ]2 _" P- m
  21. # 以下为主程序核心代码 ↓↓↓
    . [% n( \) o( ?4 M1 r5 N

  22. ( B) c3 T7 P; O) r1 d
  23. import turtle
    : J2 s) Z: s4 p9 N8 v  Q
  24. import time' ], d/ E- X5 L$ E( e# j8 l, Y/ {

  25. / e4 M$ l: l7 ?; W
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持
    0 z  t) O; }1 q! B+ Z

  27. 2 C9 {  V! n8 }2 Q: U: Q, O
  28. turtle.color("red","yellow")
    - f- }/ R, Z2 T9 l9 ?; i

  29. & F* g0 T! K4 E; |
  30. turtle.begin_fill()
    8 k+ ~' Z, u- @+ e% F
  31. for _ in range(50):1 D3 O9 a9 B9 N! {  y& b5 z
  32.     turtle.forward(200)
    5 ]; u5 e5 T7 o1 G9 ], y  H
  33.     turtle.left(170)
    & l" h0 }: x5 f- ~
  34.     turtle.end_fill()" n6 t8 q$ u7 u, e# L6 {! k; }
  35. 9 v  ?' ?* @* z( _* ^7 [
  36. turtle.hideturtle() . \  a) Y6 V8 y/ K& P$ G
  37.   N& t1 h! K+ \
  38. turtle.mainloop()
    # b8 k9 Q# \1 c3 q) [

  39.   N1 x- X- w" }! y1 r; {
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!( m5 Z9 w$ i: g) }2 d3 E3 S

  41. 9 A0 ^3 e2 H( P3 ?0 O
  42. print("┏----------------------------┓")0 p1 i0 x( i4 n" P# H
  43. print("┣--- 按下回车键即退出程序 ---┫")
    3 ]) ?% n4 y" p% Y
  44. print("┗----------------------------┛")
    3 S( y6 Y1 ]" v3 O5 I  _2 {2 P, ]
  45. input(">>>")
复制代码

7171-02:太阳花.zip

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

源代码

admin 发表于 2021-5-30 23:09:15
7171_02.jpg
( e$ H8 w9 P4 }3 M% S
: @+ S# l2 `6 _6 t例2:五角星效果图 如上所示 ↑↑↑
# y7 B$ I6 k/ |; r; t8 k: ]! W2 ]2 n4 t
  1. """
    ! b" K1 J2 C( B9 a, |* c( F0 _" D* ]
  2. 7171《实例》 - 02 - 五角星
    ' G2 Z2 E8 U  v  Y. v% \
  3. , _" `, l* n" J4 p( h& T% Q3 w
  4. Version: Python 3.x8 S9 F( K$ H" e
  5. Team: 新大榭* z/ t, j, C' f
  6. Author: 张黎斌$ }$ P6 T! J3 q0 j9 h
  7. update: 2021-05-301 C; h; l( X! R
  8. Level: B
    & v! A# _+ p0 o" }1 n* w
  9. . n, {% i& u: I/ A# {1 [
  10. """
    - x6 q/ T( s9 d9 a3 d* L* T  e3 A, K
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")  `  ]& w, M1 N. `+ b8 s

  12. # }- e) ~% V, X% N$ P& t; D
  13. # 以下为主程序核心代码 ↓↓↓
    / J* {9 C! u& k5 P. c% _
  14. . q1 `( n" s- q( Y1 L6 K6 O* L
  15. # coding=utf-8; k' u5 q5 N4 j
  16. import turtle
    % O  {( h& N; t) D
  17. import time
    0 C. t  n5 {: n3 {# k3 ?

  18. 4 d7 O+ s% w4 G
  19. turtle.pensize(5): W' G8 r9 X* w' R' c
  20. turtle.pencolor("yellow")  L% j3 o( o5 O9 ~" X' c
  21. turtle.fillcolor("red")
      e  _3 s, H8 c5 G  W

  22. / |' U. d% c- m8 Q4 {& c- S
  23. turtle.begin_fill()
    4 b6 o; {* A1 Y7 x+ b& @+ x
  24. for _ in range(5):
    5 {* M+ P) F6 l& Z- z: W+ ?
  25.     turtle.forward(200)) A3 D% A# ]1 f" M4 H0 |% d$ U' G
  26.     turtle.right(144)
    ) N4 ~4 O! |" W# Z  w
  27. turtle.end_fill()) b7 H( S: r' E( T7 h: Z
  28. time.sleep(2)
    ; n9 b* j$ H( [/ {
  29. - s2 x" n/ R: v% L
  30. turtle.penup()
    ; F& \( {& G: U. _0 G8 a
  31. turtle.goto(-150,-120). N' N; H! W" K2 n
  32. turtle.color("violet")
      z6 C" ?- j- f6 ]- e; C3 |
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
    ( K8 X6 U$ ~0 [; }& ]4 Z- c

  34. 2 \" v5 c: G+ S4 I
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    , h' U8 d' }$ ~
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")/ ?6 C5 j7 R5 t: S. a! j8 a( S
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")
    8 q4 W# u6 i! X. l& q3 s' k
  38. input("")
复制代码

& s' K4 o* _/ \' S4 B" q
# d# ^9 S* w# G1 q, y

7171_例2_五角星.zip

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

例2,源代码

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

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

7171_03.jpg
4 [6 ^' S2 D: \; s5 R$ D2 v4 a. i5 Z
+ v5 V( N" y, e1 l例3:动态时钟效果图 如上所示 ↑↑↑/ j0 K8 V9 A  y8 x, |8 F( w
( I7 A& v5 v3 I

7171_例3_时钟.zip

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

例3,源代码

admin 发表于 2021-5-31 00:32:27
7171_04.jpg
9 |6 T5 C* W" k1 u# a例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

1234下一页

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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