python學習筆記 turtle類使用__python

來源:互聯網
上載者:User

一、匯入
匯入方式一:

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”畫筆的外觀不適應

持續整理中…

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.