首页
/
每日頭條
/
生活
/
python繪圖四種方式
python繪圖四種方式
更新时间:2024-10-13 12:14:17

在Python中繪圖時,需要導入圖形模塊turtle。“turtle”的意思是“海龜”,所以這個模塊又被稱為海龜圖形模塊。有一個比較出名的集成編程環境叫海龜編輯器,以積木的形式表示命令,編程過程由“寫代碼”變成了“搭積木”,積木本身有“帽子”、“凹凸”等形狀來限制拼接,就相當于自帶邏輯限制一樣,使用起來非常方便,很适合青少年和初學者入門學習,如果感興趣可以自行下載學習。

26.1 海龜畫圖的原理

圖形模塊turtle啟用了一個非常生動的對象——海龜,這隻海龜可以在畫布上按照指令走路,它攜帶那隻畫筆默認的為“落筆”狀态,走路時會留下印痕。如果被置于“擡筆”狀态,走路是不留印痕的,但可以通過“落筆”命令使畫筆落下,這樣,它所走過的軌迹就變成了我們想要的各種圖形。可以設置畫筆的各種屬性如顔色、粗細等來改變圖形的外觀,也可以設置海龜的行為改變它的速度、方向等來改變圖形的形狀。

26.2 從畫正方形開始

這裡,仍然使用IDLE作為開發環境。

首先通過一個例子——“畫正方形”來講述如何使用Python繪圖。

>>> import turtle as t #導入海龜圖形模塊

>>> t.forward(100) #海龜前進100步

運行上面的命令後,會在海龜圖形窗口中出現如下圖形:一段從窗口中心位置出發的帶箭頭的線段。窗口的中心位置即為海龜的初始位置,并且初始狀态的海龜的頭是水平向右的。默認的是落筆狀态,所以前進時就會留下印痕。

python繪圖四種方式(Python其實很簡單第二十六章)1

我們并沒有看到海龜,因為默認的是用箭頭表示海龜,可以用如下命令顯示出海龜的造型。

>>> t.shape('turtle') #将turtle的形狀設置為“海龜”造型

此時,圖形窗口中的箭頭就變成了海龜的樣子,如下所示:

python繪圖四種方式(Python其實很簡單第二十六章)2

海龜的頭是水平向右的,和剛才箭頭所指的方向是一緻的。如果要再次切換為箭頭造型,可以使用如下命令即可:

>>> t.shape('arrow')

接下來我們繼續畫正方形:

>>> t.right(90) #海龜右轉90度

>>> t.forward(100) #海龜前進100步,畫第二條邊

>>> t.right(90)

>>> t.forward(100) #畫第三條邊

>>> t.right(90)

>>> t.forward(100) #畫第四條邊

至此,一個完整的正方形就畫出來了。

26.3 畫筆的常用設置

1、落筆函數pendown()

如:

>>> t.pendown()

無論當前畫筆的狀态如何,執行此命令後都将設置為落筆狀态。

2、擡筆函數penup()

如:

>>> t.penup()

無論當前畫筆的狀态如何,執行此命令後都将設置為擡筆狀态。

3、設置畫筆的顔色pencolor(color)

如:

>>> t.pencolor('yellow')

若不帶參數,則相當于查詢畫筆的當前顔色,如:

>>> t.pencolor()

'yellow'

4、設置畫筆的粗細pensize(n),默認值為1

如:

>>> t.pensize(10) #将畫筆的粗細值設為10

若不帶參數,則相當于查詢畫筆的當前顔色,如:

>>> t.pensize()

10

26.4 海龜設置

1、海龜速度用speed()函數來設置,可以設定的參數有:“slowest”(最慢)、“slow”(慢速)、“normal”(正常速度)、“fast”(快速)、“fastest”(最快)。例如:

>>> t.speed("slow")

>>> t.circle(100) #以當前位置為圓心,畫半徑為100的圓

執行後,由于速度設為了慢速,可以明顯看到比較緩慢的軌迹。

2、藏龜、顯龜、查詢海龜顯示狀态

如前所說,海龜通常是用箭頭表示,也可以表示為完整的海龜模樣,甚至是其他。所謂的“藏龜”,就是将該标識隐藏掉,這樣所繪的圖形就看起來更完整。為了更清楚的掌握海龜所處的位置和方向以及畫筆的顔色,可以通過“顯龜”命令将其顯示出來。

如:

>>> t.ht() #藏龜

>>> t.isvisible() #查詢海龜顯示狀态

False

>>> t.st() #顯龜

>>> t.isvisible() #查詢海龜顯示狀态

True

3、查詢海龜位置position()和将海龜移動到指定位置goto(x,y)

position()函數可以查詢海龜當前位置,goto(x,y)函數可以将海龜移動到指定位置,x、y為坐标值。

如:

>>> t.position() #查詢海龜當前位置

(-0.00,-0.00)

>>> t.goto(100,100) #将海龜移動到指定位置

>>> t.position() #查詢海龜當前位置

(100.00,100.00)

26.5 畫布設置

畫布就是可以用來繪圖的區域。

1、函數screensize()可以設置畫布的寬度、高度、背景。

格式:turtle.screensize(canvwidth=None,canvheight=None,bg=None)參數:canvwidth:畫布的寬度,canvheight:畫布的高度,bg:畫布的背景。

2、函數setup()可以設置畫布的位置,它的大小既可以根據占屏比來确定,也可以設置為用像素表示的絕對值。

格式:turtle.setup(width=0.5,height=0.75,startx=None,starty=None)width和height:寬和高,整數表示像素,小數表示占據屏幕的比例;startx和starty:表示矩形窗口左上角頂點的位置,為空,則位于屏幕中心。

26.6 設置窗口背景顔色bgcolor(color)

如:

>>> t.bgcolor('blue')

執行後窗口背景變為藍色。

26.7 實例:畫四個不同顔色的正多邊形

最後,我們用一個實例結束本章内容:由四個不同顔色的正多邊形組成的圖形。

代碼如下:

import turtle as t

t.screensize(canvwidth=600,canvheight=480,bg='Thistle') #設置窗口大小及顔色

t.reset() #初始化

t.ht() #藏龜

t.pensize(1) #設置畫筆的顔色

t.penup() #擡筆

#以下定義了一個畫正多邊形的函數,參數包括起始點的坐标、邊數、邊長、顔色

def polygon(x,y,n,l,color):

t.goto(x,y) #海龜移動到指定位置

t.pendown() #落筆

t.color(color) #隻有一個參數時,既是畫筆顔色,又是填充顔色

t.begin_fill() #開始填充

for i in range(n):

t.forward(l) #海龜前進邊長的步數

t.right(360/n) #右轉一個外角的角度

t.end_fill() #結束填充

t.penup() #擡筆

polygon(-100,100,3,100,'red')

#在(-100,100)位置開始畫邊長為100的正三邊形,顔色填充為紅色

polygon(100,100,4,80,'blue')

#在(100,100)位置開始畫邊長為80的正四邊形,顔色填充為藍色

polygon(100,-100,6,60,'Purple')

#在(100,-100)位置開始畫邊長為60的正六邊形,顔色填充為紫色

polygon(-100,-100,36,10,'Pink')

#在(-100,-100)位置開始畫邊長為10的正三十六邊形,顔色填充為粉色

運行後效果如下:

python繪圖四種方式(Python其實很簡單第二十六章)3

關于t.reset()

它的作用是初始化圖形窗口,可以清除窗口,并且使海龜回到最初的狀态(包括位置和方向)。所以,執行此命令後一切都将和剛剛打開圖形窗口時一樣。

類似的還有turtle.clear()和turtle.clearscreen()函數,也能起到清屏的作用。

關于t.right(360/n)

從如下三幅圖可以看出,畫正n邊形時,當畫完一條邊之後,隻需要将方向右轉360/n就是下一條邊的方向。

python繪圖四種方式(Python其實很簡單第二十六章)4

正三邊形

python繪圖四種方式(Python其實很簡單第二十六章)5

正四邊形

python繪圖四種方式(Python其實很簡單第二十六章)6

正六邊形

關于正三十六邊形

正三十六邊形已經接近于一個圓了,所以可以采用畫正多邊形的方法來畫圓。缺點是,一般隻知道起始點,不知道圓心的位置,半徑也不好計算。在已知圓心和半徑時,還是采用circle(r)命令更好一些。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
生了三胞胎的男孩名字
生了三胞胎的男孩名字
親戚家的三胞胎出生了,兩女一男,簡直是天賜的福氣。我和媽媽去看寶寶時,圍了一屋子人,大家都是來看三個寶貝的。我媽問親戚孩子名字起好沒,親戚得意的說早想好了。親戚姓周,他說仨孩子的名字,就叫周一,周二,周三。一聽這名字,笑翻一屋子人,大家紛紛...
2024-10-13
優秀銷售必學8種方法快速提升業績
優秀銷售必學8種方法快速提升業績
#你每天都在堅持做的事情是什麼#很多銷售新人,不是每天很辛苦,就是每天比較閑,然而無論哪一種,業績都不理想。天天辛苦卻沒業績的銷售新人,一般是沒有抓住工作重點。而每天都閑的銷售新人,大多數的情況是沒頭緒,不知道自己要做什麼,要麼嫌太麻煩不想...
2024-10-13
劉老根3為什麼延期
劉老根3為什麼延期
劉老根3為什麼延期?因為春節檔的排播調整,原定于16日上線的《劉老根3》将會延期單到2月份上線,而具體的時間還需要等待官方的通告,我來為大家科普一下關于劉老根3為什麼延期?以下内容希望對你有幫助!劉老根3為什麼延期因為春節檔的排播調整,原定...
2024-10-13
世界最遙遠的距離是我在你旁邊
世界最遙遠的距離是我在你旁邊
,
2024-10-13
什麼樣的情況不能做牙齒矯正手術
什麼樣的情況不能做牙齒矯正手術
牙齒整齊好看對我們的個性形象有着很好的幫助,同時也能幫助我們恢複原有的咀嚼功能,實現一舉兩得的目的。但是在我們進行牙齒矯正的過程中,存在很多的問題和誤區,很多人往往因為這些誤區而導緻自己出現牙齒矯正效果不佳,下面我們就一起來詳細的了解。牙齒...
2024-10-13
Copyright 2023-2024 - www.tftnews.com All Rights Reserved