Python利用Turtle庫繪制一顆櫻花樹
后唐李煜曾說道,櫻花落盡春將困,秋千架下歸時。漏暗斜月遲遲,花在枝。櫻花落盡的時候春天也將過去了,秋千架下歸去時。天上的斜月姍姍來遲,花還在枝頭。
關于python畫圖相關的,我們一直使用的是turtle來畫,用專業(yè)的非標準庫來做專業(yè)的事兒。將需要使用到的內(nèi)置庫或者非標準庫全部都導入到當前的代碼塊中。
from time import sleep # 用于控制程序運行時的阻塞停頓 from turtle import * # 繪圖相關接口 import random # 生成隨機數(shù)
設置全局需要初始化的對象,以及相關的全局參數(shù)設置,這樣就不用在后面每畫一筆進行設置了。
但是畫布上面有一個箭頭一直無法消除,有知道的大佬煩請留言說一下解決辦法,感激不盡!
tle = Turtle() # 初始化小烏龜畫筆對象 tle.hideturtle() # 全局隱藏畫筆 tle.clear() # 清除屏幕 tle.speed(0) # 設置畫筆速度為0,也就是最快的畫筆速度 scr = Screen() # 初始化屏幕對象 getscreen().tracer(30, 0) # 返回一個TurtleScreen類的繪圖對象,并開啟繪畫,加速繪畫過程 scr.screensize(bg='white') # 設置背景顏色
開始繪制,設置開始時的畫筆相關的屬性或參數(shù)。
tle.left(90) tle.up() tle.backward(150) tle.down() tle.color('sienna')
接下來是編寫兩個函數(shù),一個是用于生成樹枝/樹干并在對應的樹枝旁邊畫上櫻花。另一個則是在櫻花樹的地上鋪滿掉落的櫻花,這樣的思路來源于CSDN博客平臺,向大佬遞茶!
編寫畫櫻花樹的樹枝/樹干部分/樹枝櫻花的函數(shù)draw_branch_flower。
def draw_branch_flower(len): ''' 繪制樹枝/花函數(shù) :param len: 樹枝長度 :return: ''' sleep(0.0005) if len > 3: if 8 <= len <= 12: if random.randint(0, 2) == 0: tle.color('snow') else: tle.color('lightcoral') tle.pensize(len / 3) elif len < 8: if random.randint(0, 1) == 0: tle.color('snow') else: tle.color('lightcoral') tle.pensize(len / 2) else: tle.color('sienna') tle.pensize(len / 10) tle.forward(len) a = 1.5 * random.random() tle.right(20 * a) b = 1.5 * random.random() draw_branch_flower(len - 10 * b) tle.left(40 * a) draw_branch_flower(len - 10 * b) tle.right(20 * a) tle.up() tle.backward(len) tle.down()
編寫畫櫻花樹旁邊的地上的花瓣函數(shù)draw_ground_flower。
def draw_ground_flower(flower_num): ''' 繪制地上掉落的花瓣 :param flower_num: 花瓣數(shù)量 :return: ''' for i in range(flower_num): a = 200 - 400 * random.random() b = 10 - 20 * random.random() tle.up() tle.forward(b) tle.left(90) tle.forward(a) tle.down() tle.color('lightcoral') tle.circle(1) tle.up() tle.backward(a) tle.right(90) tle.backward(b)
調(diào)用櫻花樹相關的繪圖函數(shù),快速完成繪圖過程。
draw_branch_flower(60) draw_ground_flower(200)
使用exitonclick函數(shù)保持在繪畫完成時,窗口不會直接關閉。
scr.exitonclick()
以上就是櫻花樹的全部繪制過程了。
到此這篇關于Python利用Turtle庫繪制一顆櫻花樹的文章就介紹到這了,更多相關Python Turtle櫻花樹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python使用post提交數(shù)據(jù)到遠程url的方法
這篇文章主要介紹了python使用post提交數(shù)據(jù)到遠程url的方法,涉及Python使用post傳遞數(shù)據(jù)的相關技巧,需要的朋友可以參考下2015-04-04python中用Scrapy實現(xiàn)定時爬蟲的實例講解
在本篇文章里小編給大家整理的是一篇關于python中用Scrapy實現(xiàn)定時爬蟲的實例講解內(nèi)容,有興趣的朋友們可以學習下。2021-01-01Python?echarts實現(xiàn)數(shù)據(jù)可視化實例詳解
這篇文章主要為大家詳細介紹了Python?echarts實現(xiàn)數(shù)據(jù)可視化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03pandas數(shù)據(jù)選取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
這篇文章主要介紹了pandas數(shù)據(jù)選?。篸f[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[],文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04Python裝飾器限制函數(shù)運行時間超時則退出執(zhí)行
今天小編就為大家分享一篇關于Python裝飾器限制函數(shù)運行時間超時則退出執(zhí)行,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04Numpy數(shù)組array和矩陣matrix轉換方法
這篇文章主要介紹了Numpy數(shù)組array和矩陣matrix轉換方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08