一、匯入
匯入方式一:
from turtle import *
這種方式匯入的話,可以在檔案中直接使用該庫的所有的方法。
例如:(設定一個300*300,畫筆在100*100的位置上,畫一個圓)
from turtle import *setup(300,300,100,100)//設定介面為300*300pensize(2)pencolor('blue')circle(30)mainloop()
匯入方式二:
import turtle
如上的例子,這種匯入的方式的寫法如下
import turtlet=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 turtlet=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”畫筆的外觀不適應
持續整理中…