python學習筆記 turtle類使用
一、匯入
匯入方式一:
from turtle import *
這種方式匯入的話,可以在檔案中直接使用該庫的所有的方法。
例如:(設定一個300*300,畫筆在100*100的位置上,畫一個圓)
from turtle import *
setup(300,300,100,100)//設定介面為300*300
pensize(2)
pencolor('blue')
circle(30)
mainloop()
匯入方式二:
import turtle
如上的例子,這種匯入的方式的寫法如下
import turtle
t=turtle.Turtle()
turtle.setup(300,300,300,100)
t.pensize(2 )
t.pencolor('blue')
t.circle(30)
turtle.mainloop()
其中,turtle.Turtle()是一個畫筆的物件。
有關繪製和設定畫筆相關的就是畫筆的屬性。
turtle.setup和turtle.mainloop設定的是畫布的屬性。
二方法介紹
畫布的方法:
setup(width,height,floatx,floaty)設定繪製區域
繪製開始前呼叫tracer(False)
繪製結束之後tracer(True)
這個方法是直接展示給使用者繪製結果,無需漫長的等待繪製過程,這個方法turtle裡有,turle.Turtle裡面也有,效果是一樣的。
register_shape(name,shape) & addshape(name,shape)
原始碼
addshape = register_shape
所以這兩個方法實際上是一樣的。
註冊一個圖形
使用:
import turtle
t=turtle.Turtle()
turtle.setup(300,300,300,100)
t.pensize(2)
t.pencolor('blue')
turtle.tracer(False)
t.penup()
t.begin_poly()#開始記錄多邊形的頂點
for i in range(6):
t.forward(100 )
t.right(60)
t.end_poly()
#獲取多邊形
shape=t.get_poly()
#註冊多邊形
turtle.register_shape("shape",shape)
t.pendown()
t.shape('shape')#繪製這個圖形
turtle.tracer(True)
turtle.mainloop()
bgcolor(color) 設定螢幕的背景顏色
eg:turtle.bgcolor(‘red’)
bgpic(picname)設定螢幕背景圖案
ps:這個還未設定成功,日後在試
mode(mode)畫筆的起始方向
預設為standard,正東方向
logo 正北方向
world 世界座標系,這種方式不太懂
原始碼寫著:
'world' uses userdefined 'worldcoordinates'. *Attention*: in
this mode angles appear distorted if x/y unit-ratio doesn't equal 1.
If mode is not given, return the current mode.
意思是:
如果x / y單位比例不等於1,則這種模式角度會出現扭曲。應該是跟地球投影相類似的
ontimer(fun,t=0)定時器,定時執行fun函式
title(title)設定視窗的標題
bye() 銷燬螢幕上的物件
原始碼:
def _destroy(self):
root = self._root
if root is _Screen._root:
Turtle._pen = None
Turtle._screen = None
_Screen._root = None
_Screen._canvas = None
TurtleScreen._RUNNING = False
root.destroy()
def bye(self):
"""Shut the turtlegraphics window.
Example (for a TurtleScreen instance named screen):
>>> screen.bye()
"""
self._destroy()
呼叫bye函式之後,就不能呼叫畫筆了
eg:
turtle.bye()
t.circle(60)
執行之後:
Traceback (most recent call last):
File "E:/python/myturtle.py", line 540, in <module>
t.circle(60)
File "D:\Python27\lib\lib-tk\turtle.py", line 1903, in circle
self.speed(0)
clearscreen()清除螢幕中繪製的東西
colormode(mode)設定畫筆的顏色的表示方式
mode的值只能是1和255
預設mode=1畫筆顏色的設定如下任一種都可以:
t.pencolor('red')
t.pencolor('#aeffff')
當然如果mode=255的時候,以上兩種設定依然生效。
mode=255的時候可以呼叫t.pencolor(r,g,b)的方法,如下所示:
t.pencolor(24,2,255)
但是上面的方法在mode=1的時候是不允許呼叫的。
delay(t) 設定畫筆延遲時間,其實跟ontimer類似,只不過ontimer有指定自己的繪製函式,而delay呼叫的是turtle內部的繪製函式。
原始碼:
def delay(self, delay=None):
""" Return or set the drawing delay in milliseconds.
Optional argument:
delay -- positive integer
Example (for a TurtleScreen instance named screen):
>>> screen.delay(15)
>>> screen.delay()
15
"""
if delay is None:
return self._delayvalue
self._delayvalue = int(delay)
delay內部將delay給了_delayvalue ,我們再看下這個值,其實是TurtleScreen裡的屬性。這個值在_update裡使用.
def _update(self):
"""Perform a Turtle-data update.
"""
screen = self.screen
if screen._tracing == 0:
return
elif screen._tracing == 1:
self._update_data()
self._drawturtle()
screen._update() # TurtleScreenBase
screen._delay(screen._delayvalue) # TurtleScreenBase
else:
self._update_data()
if screen._updatecounter == 0:
for t in screen.turtles():
t._drawturtle()
screen._update()
def _delay(self, delay):
"""Delay subsequent canvas actions for delay ms."""
self.cv.after(delay)
然後看下ontimer函式
def _ontimer(self, fun, t):
"""Install a timer, which calls fun after t milliseconds.
"""
if t == 0:
self.cv.after_idle(fun)
else:
self.cv.after(t, fun)
exitonclick()點選螢幕退出
畫筆的方法:
pensize(size)設定畫筆大小
pencolor(color)設定畫筆顏色
seth(angle)設定畫筆的方向
正東方向逆時針0-360
circle(rad,angele)rad圓的半徑,為正在半徑的左邊,為負在半徑的右邊
angle 繪製的角度值 360為一個圓
fd(rad)向前直線爬行距離rad
penup()畫筆擡起
pendown()畫筆放下
begin_poly() & end_poly() 一組
記錄多邊形路徑
get_poly()獲取記錄的多邊形
shapesize(stretch_wid,stretch_len,outline)設定圖形的大小,引數:寬度拉伸,長度拉伸,圖形寬度
resizemode(rmode)設定影象大小模式
引數rmode的值:“auto”適應畫筆的外觀對應於pensize的值。
“user”按照適應畫筆的外觀 stretchfactor和outlinewidth(outline)的值, 這是由shapesize()設定的。通過呼叫具有引數的shapeize來呼叫
“noresize”畫筆的外觀不適應
持續整理中…