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