今天嘗試了用Python代碼完成書法作品(包括印章制作和書法寫字)。發(fā)現(xiàn)了編程與藝術(shù)又一個契合點,小開心一下。其實這個過程非常簡單。我們先看作品,后講解代碼。


下面我們講解一下原理和制作步驟。
準備工作:
1.下載并安裝相關(guān)字體(一般印章用篆體,書法用毛筆體,網(wǎng)上很多可以免費下載);
2.熟悉Python turtle的基本語句(包括write語句)
印章的制作:
畫框+輸入篆體字。這個過程需要調(diào)好坐標,可以在反復(fù)嘗試的過程中得到最佳結(jié)果。要注意印章中字的順序,同時注意是陰刻(字是白色、背景紅色)還是陽刻。陰刻需要先用紅色填充在寫白色篆字。
毛筆字書寫:
調(diào)好坐標,用write語句輸出即可。如果是豎排文字,每個字后面都要加上換行符‘\n’。
代碼如下圖所示,上面第一個效果圖是action()函數(shù)的結(jié)果,第二個效果圖是action2()函數(shù)的結(jié)果。

你當然可以在代碼中更改字體、字號、顏色、布局,創(chuàng)造屬于你自己的書法作品。
幾行代碼就能完成書法作品,是不是很爽?!
代碼附在下面,方便大家拷貝:
from turtle import *
def writeT(mystr,fontsize=60):
??????? pendown()
??????? write(mystr,font=('沙孟海書法字體',fontsize,'normal'))
???????? penup()
def yinzhang():
????????pensize(2)
??????? pencolor('red')
??????? pendown()
????????for i in range(4):
??????????????? ? forward(56)
????????????????? ?left(90)
?????????write('匠一\n人石',font=('經(jīng)典繁方篆',20,'normal'))
??????????penup()
def yinzhang2():
???????????pensize(3)
?????????? pencolor('white')
?????????? fillcolor('red')
?????????? begin_fill()
?????????? for i in range(4):
??????????????????? forward(56)
???????????????????? left(90)
???????????? end_fill()
??????????? write('匠一\n人石',font=('經(jīng)典繁方篆',20,'normal'))
?????????? penup()
def action():
???????? penup()
????????? goto(30,-200)
???????????writeT('用\n心\n若\n鏡',60)
?????????? goto(-70,-200) writeT('勝\n物\n不\n傷',60)
?????????? goto(-140,0)
???????????writeT('一\n石',15)
?????????? goto(-160,-70)
????????? yinzhang()
?????????? goto(-160,-140)
?????????? yinzhang2()
????????????hideturtle()
def action2():
?????????? penup()
?????????? goto(30,-200)
??????????? write('無\n用\n之\n用',font=('迷你繁篆書',70,'normal'))
??????????? goto(-70,-200)
??????????? write('是\n為\n大\n用',font=('迷你繁篆書',70,'normal'))
?????????? goto(-140,0)
?????????? writeT('一\n石',15)
????????????goto(-160,-70)
??????????? yinzhang()
?????????? goto(-160,-140)
?????????? yinzhang2()
????????? hideturtle()