python3 turtle


一.turtle

1.操控畫筆畫圖,turtle相當於筆頭(x頭?),有方向

2.https://docs.python.org/3.6/library/turtle.html

二.移動和繪制

 1 import turtle
 2 import time
 3 
 4 turtle=turtle.Turtle()#創建一個實例
 5 
 6 #設置畫筆位置,強制設定畫筆的移動
 7 print(turtle.position())#顯示當前畫筆位置,相當於pos
 8 tp = turtle.pos()#把當前的布局賦值給tp,不變
 9 turtle.setpos(60,30)#即將畫筆移動到坐標(x,y)的位置,相當於goto/setposition
10 print(turtle.pos())
11 turtle.setpos((20,80))
12 print(turtle.pos())
13 turtle.setpos(tp)
14 print(turtle.pos())
15 turtle.setx(10)#在x軸上移動畫筆位置
16 turtle.sety(-10)
17 print(turtle.pos())
18 
19 #畫筆前進方向和距離
20 print('#'*60)
21 print(turtle.heading())#顯示畫筆前進方向
22 turtle.right(45)#順時針移動degree°,lt
23 turtle.forward(25)#向當前畫筆方向移動distance像素長,fd
24 turtle.left(90)#逆時針移動degree°,rt
25 turtle.backward(45)#向當前畫筆相反方向移動distance像素長度 ,相當於bk/back
26 print(turtle.heading())
27 turtle.setheading(90)#直接設置畫筆的轉動角度,默認right
28 print(turtle.heading())
29 
30 turtle.home()#畫筆回到初始狀態
31 #方向初始為("standard"模式為right向右即東,"logo"模式是up向上即北)
32 ## “standard”模式時角度為逆時針,所以90度表示向北;logo”模式時角度為順時針,所以90度表示向東
33 
34 time.sleep(10)
位置和方向
 1 import turtle
 2 import time
 3 
 4 turtle=turtle.Turtle()
 5 
 6 turtle.speed(1)#設置繪圖速度,由快到慢:0,10--1
 7 
 8 turtle.circle(50)#畫圓,半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓
 9 turtle.circle(-120,180)#半徑120,角度180
10 turtle.circle(40, None, 5)#在指定半徑(40)下完成(None)(默認完整360)的角度,分幾(5)步畫
11 turtle.dot(20, "blue")#畫點,用顏色畫出一個直徑大小的圓點。
12 turtle.color("blue")
13 turtle.fd(100)
14 turtle.stamp()#在當前位置拷貝一份此時箭頭的形狀,返回一個stamp_id(int型)
15 #turtle.clearstamp(stamp_id)用來刪除指定stamp_id的箭頭形狀
16 #turtle.clearstamps(n=None),n為None時表示刪除所有拷貝的箭頭形狀;為0不刪除;n > 0 表示刪除前n個,n < 0 表示刪除后n個
17 turtle.fd(200)
18 
19 print(turtle.towards(0, 0))#顯示箭頭當前位置指向點(0,0)的角度,默認逆時針開始
20 print(round(turtle.xcor(), 5))#返回箭頭的x的坐標
21 print(turtle.ycor())#返回y的坐標
22 print(turtle.distance((30, 40)))#返回當前箭頭距離點(30,40)的距離
23 turtle.degrees(360)#設置角度測量單位,即設置一個完整圓的“度數”
24 turtle.radians()#將角度測量單位設置為弧度,將一個完整圓的“度數”設置成2π
25 
26 turtle.undo()#撤銷最后的動作
27 
28 time.sleep(10)
29 ---------------------------------------------
30 38.6598082541
31 -300.0
32 -239.9999999999996
33 432.7817001676475
畫圓

三.畫筆控制

 1 import turtle
 2 import time
 3 
 4 turtle=turtle.Turtle()
 5 turtle.speed(1)
 6 
 7 #設置畫筆屬性
 8 turtle.pen(fillcolor="black", pencolor="red", pensize=10)
 9 turtle.pensize(5)# 設置線條粗細為5
10 print(turtle.pensize())#返回線條粗細為5
11 turtle.penup()#畫筆抬起,此時移動不會進行繪制操作
12 turtle.forward(100)
13 turtle.pendown()#畫筆按下,此時移動會進行繪制操作
14 print(turtle.isdown())#獲取畫筆是否按下,按下返回True,否則返回False
15 turtle.forward(50)
16 
17 #顏色控制
18 turtle.pencolor('red')# 設置或返回畫筆顏色(設置后海龜箭頭的外輪廓也是這個顏色)
19 #pencolor(r, g, b)設置RGB color,(r,g,b)每個都在(0,colormode),colormode顏色模式取值1.0或255
20 turtle.pencolor(0.2, 0.8, 0.55)
21 turtle.fillcolor("red")#返回或設置畫筆填充顏色(設置后海龜箭頭內部填充也是這個顏色)
22 turtle.fillcolor(0.1, 0.2, 0)
23 turtle.color("red", "green")#設置或返回pencolor和fillcolor
24 
25 #填充,
26 #返回填充狀態(填充狀態則返回True,否則返回False)、開始填充圖形之前先調用turtle.begin_fill()、填充完圖形后調用turtle.end_fill()
27 print(turtle.filling())#返回填充狀態
28 turtle.begin_fill()
29 turtle.circle(20, None, 6)
30 turtle.end_fill()
31 
32 #更多繪畫控制
33 screen = turtle.getscreen()
34 turtle.reset()#清屏並將畫筆位置和方向恢復到初始狀態,保持畫筆形狀不變,即位置恢復到原點(0, 0)位置
35 turtle.clear()# 清屏並且畫筆形狀也恢復默認,保持畫筆位置和方向不變
36 turtle.write("Home = ", True, align="center")#繪制文本
37 #turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal"))
38 #(待繪制的文本,設置是否繪制,設置文本下方初始位置,設置字體)
39 
40 time.sleep(10)
畫筆設置

三.繪畫狀態

 1 import turtle
 2 import time
 3 
 4 turtle=turtle.Turtle()
 5 turtle.speed(1)
 6 
 7 #箭頭可視化
 8 turtle.hideturtle()#隱藏畫筆(即海龜箭頭),
 9 turtle.showturtle()#顯示畫筆(即海龜箭頭)
10 print(turtle.isvisible())#返回(海龜)畫筆當前是否是可見狀態,
11 
12 #箭頭外觀
13 turtle.shape("turtle")#設置或返回畫筆箭頭形狀名
14 turtle.shapesize(2,5, 12)#返回或設置畫筆x/y方向拉伸值和(或)shape輪廓寬度,僅當resizemode為“user”模式時有效
15 turtle.resizemode("user")#設置或返回畫筆箭頭大小的縮放模式
16 #“auto”: 畫筆箭頭隨 pensize變化而變化.“noresize”:畫筆箭頭大小不變
17 # “user”: 畫筆箭頭大小取決於【通過shapesize()進行設置的】.stretchfactor和outlinewidth (outline)的值
18 turtle.shearfactor(0.5)#設置或返回剪切因子,
19 turtle.tilt(45)#保持箭頭方向不變的前提下,旋轉箭頭形狀
20 turtle.tiltangle(90)#獲取或設置(保持箭頭方向不變的前提下,)旋轉箭頭形狀的角度
21 print(turtle.shapetransform())#返回或設置箭頭形狀的當前變換矩陣
22 print(turtle.get_shapepoly())#返回當前多邊形的坐標對,一般用來定義一個新形狀或作為一個復合形狀的一部分
23 
24 time.sleep(10)
25 -----------------------------------------------------------
26 True
27 (-3.6739403974420594e-16, -5.0, 2.0, 2.499999999999999)
28 ((-80.0, 39.999999999999986), (-70.0, 30.999999999999986), (-50.0, 22.999999999999993), (-35.0, 9.499999999999993), (-45.0, 8.499999999999993), (-40.0, 1.999999999999993), (-24.999999999999996, 0.49999999999999645), (-4.999999999999997, -11.5), (15.000000000000002, -17.499999999999996), (30.000000000000004, -30.999999999999993), (40.0, -31.999999999999993), (25.0, -20.499999999999996), (35.0, -17.499999999999993), (25.0, -4.4999999999999964), (40.0, -7.999999999999993), (29.999999999999996, 1.0000000000000053), (14.999999999999998, 2.5000000000000027), (-5.000000000000003, 16.5), (-25.000000000000004, 24.499999999999996), (-40.0, 37.99999999999999), (-45.0, 36.49999999999999), (-35.0, 25.499999999999993), (-50.0, 26.999999999999993), (-70.0, 38.999999999999986))
箭頭狀態

 1 import turtle
 2 from turtle import Turtle
 3 import time
 4 
 5 class MyTurtle(Turtle):
 6     def glow(self,x,y):
 7         self.fillcolor("red")
 8     def unglow(self,x,y):
 9         self.fillcolor("")
10 
11 turtle = MyTurtle()
12 turtle.onclick(turtle.glow)     # 畫布上鼠標左鍵在當前海龜箭頭位置按下時綁定一個函數
13 turtle.onrelease(turtle.unglow)#畫布上鼠標左鍵在當前海龜箭頭位置彈起時綁定一個函數
14 turtle.ondrag(turtle.goto)#畫布上鼠標左鍵在當前海龜箭頭位置按下並拖動時綁定一個函數
15 time.sleep(10)
利用函數
 1 import turtle
 2 import time
 3 
 4 
 5 turtle=turtle.Turtle()
 6 turtle.speed(1)
 7 
 8 turtle.begin_poly()#開始記錄多邊形第一個頂點
 9 turtle.circle(40,None,3)
10 turtle.end_poly()#結束記錄多邊形頂點
11 p=turtle.get_poly()#獲取最后記錄的多邊形
12 print(p)
13 clo = turtle.clone()#具有相同位置、方向和海龜箭頭屬性的海龜的克隆
14 print(turtle.getturtle())#返回當前海龜屏幕上第一個海龜對象本身
15 print(turtle.getscreen())#返回繪制着海龜的海龜屏幕對象,獲取該對象后就可以調用海龜屏幕對象的一些方法了
16 turtle.setundobuffer(42)#設置或禁用撤銷功能, size為None表示禁用撤銷功能;否則設置多大,就可以通過調用undo()方法撤銷多少次
17 while  turtle.undobufferentries():#獲取當前剩余可撤銷次數, 判斷是否可撤銷
18     turtle.undo()## 執行撤銷操作
19 
20 time.sleep(10)
21 -------------------------------------------------------------
22 ((0.00,0.00), (34.64,60.00), (-34.64,60.00), (-0.00,0.00))
23 <turtle.Turtle object at 0x0334C4B0>
24 <turtle._Screen object at 0x0334C510>
特殊海龜方法

 

 1 import turtle
 2 
 3 turtle=turtle.Turtle()
 4 turtle.speed(1)
 5 screen=turtle.getscreen()#獲取海龜屏幕
 6 
 7 #窗口控制
 8 screen.bgcolor('red')# 設置或返回海龜屏幕TurtleScreen的背景色
 9 screen.bgpic('image.PNG')# 設置/刪除背景圖片或返回當前的背景圖片名
10 screen.screensize(200,100)#返回或設置畫布大小
11 screen.setworldcoordinates(-50, -7.5, 50, 7.5)#設置用戶自定義的坐標系統
12 #畫布左下角x坐標,左下角y坐標,右上角x坐標,右上角y坐標,
13 # 如果必要的話需要切換到“world”模式,如果“world”模式已經是活動的,則會根據新的坐標重繪圖紙。
14 screen.reset()#重新設置屏幕
15 # screen.clear()#清空屏幕
16 
17 #動畫控制
18 screen.delay(5)#設置或返回繪圖延遲(單位:毫秒),繪圖延遲越長,動畫的速度越慢
19 screen.tracer(8, 25)# 打開或關閉海龜動畫,並設置繪制延遲
20 screen.update()# 更新海龜屏幕TurtleScreen對象,tracer關閉時使用
21 
22 #使用屏幕事件
23 def f():
24     turtle.fd(50)
25     turtle.lt(60)
26 screen.onkey(f, "Up")#鍵盤上key鍵key-release事件觸發時(即按下並抬起)綁定一個無參函數
27 screen.listen()# 為了收集關鍵事件,讓海龜屏幕TurtleScreen的對象獲取焦點
28 screen.onkeypress(f, None)#鍵盤上key鍵按下時即key-press事件觸發時綁定一個無參函數
29 def turn(x, y):
30     turtle.lt(90)
31 screen.onclick(turn)# 畫布上鼠標左鍵在按下時綁定一個函數
32 screen.ontimer(f, 250)#開啟一個計時器,t毫秒后調用函數fun
33 screen.clear()
34 
35 #輸入相關方法
36 screen.textinput("歡迎框", "你的姓名是")# 彈出一個輸入文本的彈出框,
37 screen.numinput("身高", "請輸入您的身高(單位:米)", 0, 0, 2.5)# 彈出一個輸入數字的彈出框
38 
39 #設置以及特殊方法
40 screen.mode(mode=None)#設置或返回海龜模式,默認是"standard"標准模式
41 #"standard"向右(東),逆時針方向;"world" 向右(東),逆時針;"logo"向上(北)順時針方向
42 screen.colormode(cmode=None) # 返回或設置colormode的值為1.0或255
43 screen.getcanvas()# 返回海龜屏幕TurtleScreen的畫布對象實例
44 print(screen.getshapes())# 獲取當前可用海龜形狀的名稱列表
45 # screen.register_shape("turtle.gif")# 內存中添加注冊海龜圖形
46 print(screen.turtles())# 返回海龜屏幕TurtleScreen中所有的海龜箭頭對象列表
47 print(screen.window_height())# 返回海龜繪圖窗口的高/寬
48 print(screen.window_width())# 返回海龜繪圖窗口的寬
49 
50 #屏幕特殊方法
51 screen.setup(width=576, height=100, startx=0, starty=0)# 設置默認展現的主窗口的大小和位置
52 screen.title("hello turtle")# 設置海龜窗口標題
53 # screen.bye()# 關閉海龜圖形窗口
54 screen.exitonclick()# 運行后屏幕自動消失,調用這句后屏幕會保持,直到點擊屏幕才會關閉海龜圖形窗口
55 # screen.mainloop()#告訴窗口等待用戶操作,窗口不自動關閉
56 
57 --------------------------------------------------------
58 ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle', 'turtle']
59 []
60 810
61 960
screen

 總結

 1 import turtle
 2 
 3 turtle=turtle.Turtle()#創建Turtle實例
 4 screen=turtle.getscreen()#獲取屏幕
 5 
 6 #設置屏幕屬性(長寬,顏色)
 7 screen.screensize(800,600,'black')
 8 screen.delay(10)#設置繪圖延遲
 9 
10 #設置畫筆及箭頭
11 turtle.pen(pencolor='red',#畫筆顏色
12            pensize=5,#線條粗細
13            speed=1,#繪畫速度
14            shown=True,#是否顯示
15            fillcolor='blue',#填充色
16               )
17 turtle.shape('turtle')#箭頭形狀
18 turtle.penup()#提起畫筆
19 turtle.goto(100,100)#移動畫筆
20 turtle.pendown()#放下畫筆
21 
22 #繪圖
23 #移動(方向和距離)
24 turtle.forward(100)
25 turtle.left(90)
26 turtle.backward(100)
27 turtle.right(90)
28 
29 #填充圖形
30 turtle.begin_fill()#開始填充
31 for i in range(4):
32     turtle.forward(100)
33     turtle.right(90)
34 turtle.end_fill()#結束填充
35 
36 #畫點和圓
37 turtle.dot(20,'green')
38 turtle.circle(40, None)
39 turtle.circle(90,180, 5)
40 turtle.write("title",align="center", #繪制文本
41              font=("Arial", 20, "normal"))#(文本,位置,字體)
42 
43 #多邊形
44 turtle.begin_poly()#開始記錄多邊形第一個頂點
45 turtle.circle(40,None,3)
46 turtle.end_poly()#結束記錄多邊形頂點
47 p=turtle.get_poly()#獲取最后記錄的多邊形
48 print(p)
49 
50 turtle.undo()#撤銷上一個turtle動作
51 # turtle.home()#畫筆重置,從當前位置移動到初始位置
52 turtle.clear()#清空turtle窗口,但是turtle的位置和狀態不會改變
53 # turtle.reset()#清空窗口,重置turtle狀態為起始狀態
54 screen.mainloop()#窗口不自動關閉
55 ----------------------------------------------------
56 ((200.00,180.00), (165.36,120.00), (234.64,120.00), (200.00,180.00))
總結

 例:

1 import turtle
2 
3 star = turtle.Turtle()
4 
5 for i in range(5):
6     star.forward(50)
7     star.right(144)
8 
9 turtle.done()
五角星

1 import turtle
2 
3 spiral = turtle.Turtle()
4 
5 for i in range(20):
6     spiral.forward(i * 10)
7     spiral.right(144)
8 
9 turtle.done()
螺旋星

 

 1 import turtle
 2 
 3 ninja = turtle.Turtle()
 4 
 5 ninja.speed(10)
 6 
 7 for i in range(180):
 8     ninja.forward(100)
 9     ninja.right(30)
10     ninja.forward(20)
11     ninja.left(60)
12     ninja.forward(50)
13     ninja.right(30)
14 
15     ninja.penup()
16     ninja.setposition(0, 0)
17     ninja.pendown()
18 
19     ninja.right(2)
20 
21 turtle.done()

 1 import turtle
 2 
 3 turtle=turtle.Turtle()
 4 screen=turtle.getscreen()
 5 
 6 turtle.color('red', 'yellow')
 7 turtle.begin_fill()
 8 for i in range(50):
 9     turtle.forward(200)
10     turtle.left(170)
11 turtle.end_fill()
12 screen.mainloop()
太陽花

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM