新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

新大榭论坛 门户 查看主题

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

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

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

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

x
同学们欢迎来到 Python Turtle库专题微课学习!
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
turtle绘图的基础知识:
1. 画布(canvas)
2 Q, v$ p+ X/ g* p: T; o, j
        画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
8 z/ x! |4 L/ j$ j        设置画布大小

- W- l  d( _" K) q+ F  b
  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)
    - I* C. U; w/ @. I: h# B4 N
  2. 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码
       如下所示:
- _- u8 ~- R- i* M: W
  1. turtle.setup(width=0.6,height=0.6)1 L, o1 D  l* x) C2 B2 H
  2. turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
2. 画笔

  u& r. X, d! v2.1 画笔的状态3 B2 K; l; h: C. m/ E
        在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
: \& r9 D) Z: G+ [8 B8 s2 ^: C9 `; _8 n6 M( ~7 \  n
2.2 画笔的属性
  l7 g5 ?$ N& V" ?9 N8 F        画笔(画笔的属性,颜色、画线的宽度等)
' V( I4 I+ q- i# D% v# |8 G        1) turtle.pensize():设置画笔的宽度;- b0 A$ Y8 X5 K9 G% v% {: s
        2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
  o0 ~6 O( u" u) T" k: t. s& C        3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越
- E( k7 B  j% A$ F6 m
8 X6 ]/ C; Y3 m6 ~6 V: y2.3 绘图命令
- k& F' `1 c" H0 Y3 M# C         操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。; j  w6 v( ]; z& y

% h6 u% s( V. |3 `(1)    画笔运动命令
/ N" ]) {1 E+ F; e5 M" N
命令
说明
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)
绘制一个指定直径和颜色的圆点
" s/ |0 ^. u0 g9 N. `8 l7 H
(2)     画笔控制命令( x, ^7 I2 d6 n5 s2 y. m3 ^
" ~* F/ a( i' K8 {" f
命令
说明
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形状

$ b' `5 a' k# \: Q3 p
4 W' _) I$ A) q3 t) w, ](3)    全局控制命令' J  m' a. ]  R3 ^7 K. c0 Q! [

" F0 h- o2 P" x
命令
说明
turtle.clear()2 p) I' g0 n1 [
清空turtle窗口,但是turtle的位置和状态不会改变
turtle.reset()
清空窗口,重置turtle状态为起始状态
turtle.undo()
撤销上一个turtle动作
turtle.isvisible(); t! [. G# O# l
返回当前turtle是否可见
stamp()
复制当前图形
turtle.write(s [,font=("font-name",font_size,"font_type")])
写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
( n, I- A/ s1 a! J$ p
3 ]3 n8 M# ?3 g, i
(4)    其他命令
; g+ t4 Q. |5 {7 q' h( m. M6 ~$ f$ ?. X( {
命令
说明
turtle.mainloop()
turtle.done()
启动事件循环 - 调用Tkinter的mainloop函数3 H+ G& N$ t. J  `% f
必须是乌龟图形程序中的最后一个语句
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。
如果没有给出模式,则返回当前模式。

  P: e8 C0 c1 t9 i7 F
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针
# L/ x" {7 g$ r1 {5 J* j
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()
/ q) {( }. e  s- c% w" i7 V
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。

( r4 ^# W- X% {( z  f) `1 N5 e
3. 命令详解
/ \+ P! b1 J+ j& D) Y% i0 R

; \0 {. j" i8 n1 ~+ C9 O% c1 b
        3.1 turtle.circle(radius, extent=None, steps=None)
        描述:以给定半径画圆

5 Z! x+ V- u% X* B7 V( g% e6 ^' i, |
       参数
        radius(半径):半径为 (负),表示圆心在画笔的 左边 (右边)画圆;
        extent(弧度) (optional);
        steps(optional) (做半径为 radius 内切正多边形多边形 边数 steps )。

  ^  R3 f) J/ G, L9 G
       举例
  1. circle(50)          # 整圆! J( K8 [$ Q8 X, a* Q. l- ?
  2. circle(50,steps=3)  # 三角形4 o8 \  J8 p# Y( Z1 _3 I
  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 # T# q, Y: C" J( l0 P4 A
) i* q" k" O, g- B7 }% u0 w" ]
例2:太阳花效果图 如上所示 ↑↑↑4 y3 G( O" b  R* I
  1. # -*- coding: utf-8 -*-
    8 u( j6 y) W8 s8 E1 H
  2. """+ p9 s2 p5 K9 i0 @
  3. @Team: 新大榭论坛: o) w9 I9 Y, v  j# }
  4. @Author: 张黎斌
    6 y2 ?* k* O$ n- r* [
  5. @update: 2021-08-01" J( n; N) T$ Y3 B& W4 ]
  6. @Version: v1.17 K  x8 v. i/ ~$ |7 u
  7. @BBSid: 7171-02-01
    2 h/ T9 p0 J" @7 t2 Z
  8. @Level: B
    + `2 \% @' W" v, ]8 P6 e- A
  9. ---------------------------
    ' @0 t% I0 u- x1 n
  10. 【turtle】实例2:太阳花) ?  D  i& V0 G) R0 c0 C
  11. ---------------------------
    $ L( f0 M6 s! ?2 g
  12. """
    : S# p, n1 d3 J9 ^
  13. print("+----------------------------------------------------------+")2 G) Y& `) e- O9 P; p
  14. print(">>> 新大榭Python文件启动程序(py文件双击) V1.3.21.0801 ")+ h8 t, N  L/ T; _5 \3 ~  w
  15. print("+----------------------------------------------------------+")
    - `. H+ y4 i" e7 b" p6 f7 t
  16. print(">>> 新大榭Web实验室 http://lab.daxie.net.cn/ ")9 y) E' A/ \  c& H# H, }* B
  17. print("+----------------------------------------------------------+")0 P& C3 [2 p; p1 h! F4 d$ h& |- [
  18. print("↓↓↓ 《【turtle】实例2:太阳花》")
    8 U: _' f* Q" E/ H8 W# J
  19. print("+----------------------------------------------------------+")
    % U# w3 P& Q) \7 w; N
  20. $ ~/ ^4 h/ @4 @( `) f- N
  21. # 以下为主程序核心代码 ↓↓↓1 ?1 X* r. O5 _. r" D, p1 r
  22. 7 e7 t( h" V2 e% x& \3 D9 i8 \
  23. import turtle
    # Y- w  ^4 U/ O2 F
  24. import time
    , X* Q# x/ }0 L3 f  A" J! n7 ]

  25. * N- y+ }4 V5 ]9 y: v
  26. # 同时设置pencolor=color1, fillcolor=color2,V3.8.X版本不支持( e; U8 l, ]' P; D3 D: {
  27. ; @1 g$ `$ i$ ^$ N" E, K
  28. turtle.color("red","yellow")
    / C( E1 H& q# e0 Z: H) X, U
  29. ; z; r  S- Q$ s) r; s
  30. turtle.begin_fill()! S2 t  F1 M$ k$ `& _$ Y% ^+ \$ a
  31. for _ in range(50):
    8 }, P& }  a2 L" }. W! I
  32.     turtle.forward(200)
    2 |1 w4 p, m( m% ~4 A. T
  33.     turtle.left(170)2 E6 |7 A- ]2 x' r' n% C
  34.     turtle.end_fill(): _6 w+ {, E/ L

  35. , |3 J+ d* e, ?3 A/ C" |( Y  \! [
  36. turtle.hideturtle() 2 ?  h) a, I8 p, i8 [5 f+ }) W

  37. 9 \; `& T. v1 J1 H# G- Q
  38. turtle.mainloop()' T% S$ x9 g9 o0 l5 p  z8 v3 q
  39. # g0 c) e4 h6 Q# y! G7 r
  40. # ↓↓↓ 以下代码优化与答题无关,可屏蔽IDLE程序意外退出!! |  P) W$ ]# ^: t! u" Z2 h/ [$ \) F
  41. 6 C# R7 k7 \: X
  42. print("┏----------------------------┓")
      y  I; Q% A. D/ W# t
  43. print("┣--- 按下回车键即退出程序 ---┫")  t' N2 h. ~5 t( y  Y- M( W% K
  44. print("┗----------------------------┛") ! v8 v! }: o: F6 ^) x. A0 v* n
  45. input(">>>")
复制代码

7171-02:太阳花.zip

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

源代码

admin 发表于 2021-5-30 23:09:15
7171_02.jpg
) A8 @' K2 F- {5 C& N/ e+ i9 z: l. e' {2 b8 |5 `0 K
例2:五角星效果图 如上所示 ↑↑↑
+ o( f' i% l( r' y  R: t$ H
+ I. l% e+ `5 z& z+ Q. z
  1. """
      Q  S2 G3 I! a: P* w
  2. 7171《实例》 - 02 - 五角星
    ; o) t/ S5 h/ k! `) n# a$ K
  3. * o' T1 _0 \' t6 ~4 `6 X% ~
  4. Version: Python 3.x, q' F1 v! @7 `4 u+ j  f1 `" z9 i. [
  5. Team: 新大榭8 t. _7 j' J: {' x
  6. Author: 张黎斌. |+ R; F6 i, {7 b* C
  7. update: 2021-05-305 ?4 w6 Y# s3 }" i8 ]6 w
  8. Level: B* R1 a" J+ r% D: B1 G+ R. c* U: b
  9. 9 Q1 x, \4 O: a6 Y$ x
  10. """
    4 v1 O8 l- H/ T- E8 y
  11. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    - H. K. c( u+ {8 v

  12. - H% v3 L' f9 K6 e0 @
  13. # 以下为主程序核心代码 ↓↓↓
    ' ]9 ?. I( s- t" Q! Z6 k4 a
  14. $ u6 J. J9 q* z! f! U6 i5 W
  15. # coding=utf-8; }' @# ~: O8 D5 K
  16. import turtle
    / M& m) G4 }8 D2 B9 Q3 Q+ n% v
  17. import time$ A2 d- H" g  r3 v5 y. {8 q' x
  18. : Y, O" i' [- V  c6 O! S
  19. turtle.pensize(5)/ t- Y+ S, _" F! D+ }
  20. turtle.pencolor("yellow")4 Z+ Q7 u; o! y1 o+ ~* v
  21. turtle.fillcolor("red")! G( C( ?1 E4 j( F, T

  22. * H" b" a( l0 k" J+ ^# r
  23. turtle.begin_fill()* w8 j' n1 }- P" Z3 M0 I
  24. for _ in range(5):1 J* Q$ }$ {9 X) k! w/ i# `
  25.     turtle.forward(200), T3 V; \/ E: H3 V* r4 X
  26.     turtle.right(144). }2 O$ U& p, v# U4 @) |# G
  27. turtle.end_fill()  W/ e3 {  ]* B: \7 M1 u9 {; g& i
  28. time.sleep(2)
    # d+ A0 m! k( ^

  29. # V# J1 C( w0 c9 v- X9 `
  30. turtle.penup()
    . |1 p8 [( U% B; Y  k8 \8 Z
  31. turtle.goto(-150,-120)
    % j. u1 P8 I. Z
  32. turtle.color("violet")
    & M& {  ?- i; x4 S
  33. turtle.write("新大榭", font=('Arial', 40, 'normal'))
    ' }$ a4 u  s& }6 B; \( t8 V. ?
  34.   Y+ p  ?7 v  u3 T4 y! l* ~
  35. # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
    : a$ R# g  Q# Q0 q
  36. print("+ - - - - - - - - - - - - - - - - - - - - - - - - - +")
    $ v# ?* p5 o8 z
  37. print("\n+ - - - - 按 下 任 意 键 即 可 退 出 程 序  - - - - +")$ W- H" g% ]. z8 V) t
  38. input("")
复制代码
3 G( d: {" j' f9 f. y2 W) D$ h
4 v+ i% w9 O, K; K# H

7171_例2_五角星.zip

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

例2,源代码

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

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

7171_03.jpg
% ]/ y% `0 Y/ X, G  Y3 u+ }1 w
例3:动态时钟效果图 如上所示 ↑↑↑" P) X- r9 Y% u" `) a
! h+ [( s, A9 }" b1 Z" l+ y

7171_例3_时钟.zip

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

例3,源代码

admin 发表于 2021-5-31 00:32:27
7171_04.jpg
! K5 Q8 s1 ^4 I例4:国旗效果图 如上所示 ↑↑↑

7171_例4_国旗.zip

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

例4,源代码

1234下一页
新大榭七周年,感谢由您!

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

GMT+8, 2025-8-21 17:11 , Processed in 0.095217 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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