Python+Turtle制作獨(dú)特的表白圖
開(kāi)始之前先來(lái)看看效果圖,在控制臺(tái)輸入相應(yīng)的參數(shù)設(shè)置即可生成自己獨(dú)特的表白圖。

想要在圖片上書寫什么樣的信息,就看你的發(fā)揮了,哈哈哈~

import turtle as tle # 小烏龜繪圖庫(kù)
使用turtle小烏龜畫圖之前,先進(jìn)行全局參數(shù)初始化的設(shè)置,并使得全局初始化函global_init可以動(dòng)態(tài)傳參供后面的方便調(diào)用。
def global_init(w=900, h=600, psize=15, sp=0):
'''
全局畫筆屬性初始化函數(shù)
:param w: 畫布寬度
:param h: 畫布高度
:param psize: 畫筆尺寸
:param sp: 繪畫速度
:return:
'''
tle.setup(width=w, height=h)
tle.color('red', 'pink')
tle.pensize(psize)
tle.speed(sp)
設(shè)置完上面的屬性之后,就可以正式開(kāi)始繪圖了,這里為了使代碼結(jié)構(gòu)清晰還是創(chuàng)建一個(gè)表白紅心的函數(shù)draw_red_heart。
def draw_red_heart(confession='我愛(ài)你', confession_h=30,
sign='來(lái)自遠(yuǎn)方的仰慕者', sign_w=20, sign_h=25):
'''
繪制表白紅心
:param confession: 表白語(yǔ)句
:param confession_h: 表白語(yǔ)句尺寸大小
:param sign: 簽名
:param sign_w: 簽名寬度
:param sign_h: 簽名高度
:return:
'''
tle.up()
tle.hideturtle()
tle.goto(0, -180)
tle.showturtle()
tle.down()
tle.speed(500)
tle.begin_fill()
tle.left(140)
tle.forward(224)
for n in range(200):
tle.right(1)
tle.forward(2)
tle.left(120)
for n in range(200):
tle.right(1)
tle.forward(2)
tle.forward(224)
tle.end_fill()
tle.pensize(12)
tle.up()
tle.hideturtle()
tle.goto(0, -20)
tle.showturtle()
tle.color('#CD5C5C', 'pink')
tle.write(confession, font=('gungsuh', confession_h), align="center")
tle.up()
tle.hideturtle()
tle.color('black', 'pink')
tle.goto(180, -180)
tle.showturtle()
tle.write(sign, font=(sign_w, sign_h), align="center", move=True)
編寫主體業(yè)務(wù)函數(shù)main,調(diào)用整個(gè)繪畫程序運(yùn)行。
def main():
print('按要求輸入下面的繪圖參數(shù)...')
width = int(input('請(qǐng)輸入畫布寬度:\n'))
height = int(input('請(qǐng)輸入畫布高度:\n'))
psize = int(input('請(qǐng)輸入畫筆尺寸:\n'))
speed = int(input('請(qǐng)輸入畫筆速度:\n'))
confession = input('請(qǐng)輸入表白語(yǔ)句:\n')
confession_h = int(input('請(qǐng)輸入表白語(yǔ)句字體大小:\n'))
sign = input('請(qǐng)輸入簽名:\n')
sign_w = int(input('請(qǐng)輸入簽名寬度:\n'))
sign_h = int(input('請(qǐng)輸入簽名高度:\n'))
print('參數(shù)錄入完成,開(kāi)始繪圖...')
global_init(w=width, h=height, psize=psize, sp=speed)
draw_red_heart(confession=confession, confession_h=confession_h,
sign=sign, sign_w=sign_w, sign_h=sign_h)
print('繪圖完成!')
# 保存eps格式的繪圖結(jié)果
eps = tle.getscreen()
eps.getcanvas().postscript(file=r"./表白.eps")
# 保存JPG格式的圖片
from PIL import Image
im = Image.open("./表白.eps")
im.save("表白.jpg")
print('繪圖保存成功,默認(rèn)在當(dāng)前路徑!')
# 繪圖完成后保持窗口不被關(guān)閉
screen = tle.Screen()
screen.exitonclick()
注意:在將表白.eps文件保存為JPG格式的文件時(shí)會(huì)拋出如下的錯(cuò)誤。
raise OSError("Unable to locate Ghostscript on paths")
這個(gè)時(shí)候不要著急,當(dāng)然有解決的辦法的,到ghostscript官網(wǎng)下載自己需要的組件就OK了。

然后,將下載好的gs9561w64.exe可執(zhí)行應(yīng)用安裝就成了。

記得安裝完成后,路徑都是在這個(gè)地方,不需要也可以隨時(shí)卸載。

最后,將該路徑加入到環(huán)境變量的path屬性中就大功告成啦,重啟一下開(kāi)發(fā)工具這樣環(huán)境變量就會(huì)真正的生效了。

再次提醒,記得配置完環(huán)境變量后重啟IDE喔!
main()
到此這篇關(guān)于Python+Turtle制作獨(dú)特的表白圖的文章就介紹到這了,更多相關(guān)Python Turtle表白圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中scrapy處理項(xiàng)目數(shù)據(jù)的實(shí)例分析
在本篇文章里小編給大家整理了關(guān)于python中scrapy處理項(xiàng)目數(shù)據(jù)的實(shí)例分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-11-11
Ubuntu下Python2與Python3的共存問(wèn)題
Linux系統(tǒng)一般自帶Python,有時(shí)候又自己下載了Python,因此有可能Python2和Python3同時(shí)存在。那么當(dāng)我們?cè)赥erminal鍵入python的時(shí)候,會(huì)調(diào)出哪個(gè)Python呢?本文即解決這個(gè)問(wèn)題2018-10-10
IDA Pro 6.0使用Qt框架實(shí)現(xiàn)了跨平臺(tái)的UI界面
通過(guò)本文帶領(lǐng)大家學(xué)習(xí)如何使用PySide使用IDAPython為 IDA Pro 創(chuàng)建 UI 界面,對(duì)IDA Pro 6.0使用Qt 框架實(shí)現(xiàn)了跨平臺(tái)的UI相關(guān)知識(shí)感興趣的朋友一起看看吧2021-07-07
TensorFlow固化模型的實(shí)現(xiàn)操作
這篇文章主要介紹了TensorFlow固化模型的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)通過(guò)公共鍵對(duì)字典列表排序算法示例
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)通過(guò)公共鍵對(duì)字典列表排序算法,結(jié)合實(shí)例形式分析了Python基于operator模塊中的itemgetter()函數(shù)對(duì)字典進(jìn)行排序的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
PyHacker編寫指南引用Nmap模塊實(shí)現(xiàn)端口掃描器
這篇文章主要為大家介紹了PyHacker編寫指南Nmap模塊實(shí)現(xiàn)端口掃描,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python+Flask實(shí)現(xiàn)自定義分頁(yè)的示例代碼
分頁(yè)操作在web開(kāi)發(fā)中幾乎是必不可少的,而flask不像django自帶封裝好的分頁(yè)操作。所以本文將自定義實(shí)現(xiàn)分頁(yè)效果,需要的可以參考一下2022-09-09

