用Python写书法作品,WOW!

今天尝试了用Python代码完成书法作品(包括印章制作和书法写字)。发现了编程与艺术又一个契合点,小开心一下。其实这个过程非常简单。我们先看作品,后讲解代码。

Python书法作品1

Python书法作品2

下面我们讲解一下原理和制作步骤。

准备工作:

1.下载并安装相关字体(一般印章用篆体,书法用毛笔体,网上很多可以免费下载);

2.熟悉Python turtle的基本语句(包括write语句)

印章的制作:

画框+输入篆体字。这个过程需要调好坐标,可以在反复尝试的过程中得到最佳结果。要注意印章中字的顺序,同时注意是阴刻(字是白色、背景红色)还是阳刻。阴刻需要先用红色填充在写白色篆字。

毛笔字书写:

调好坐标,用write语句输出即可。如果是竖排文字,每个字后面都要加上换行符‘\n’。

代码如下图所示,上面第一个效果图是action()函数的结果,第二个效果图是action2()函数的结果。

Python写书法代码

你当然可以在代码中更改字体、字号、颜色、布局,创造属于你自己的书法作品。

几行代码就能完成书法作品,是不是很爽?!

代码附在下面,方便大家拷贝:

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=('经典繁方篆',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=('经典繁方篆',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()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我杨某人的青春满是悔恨

仿【每天】首页动画

最近工作一直挺忙,偶有闲暇时都在翻看《iOS Animations by Tutorials》,受益良多,尤其是让我对Core Animation有了更深入的理...

852
来自专栏hightopo

原 荐 WebGL 3D 电信机架实战之数据

2336
来自专栏前端架构与工程

浅谈事件冒泡

前端开发中不可避免会接触到事件冒泡,今天简单记录一下处理事件冒泡的一点经验,谈不上心得,聊当抛砖引玉。 不谈移动端,以PC浏览器的click事件为例。 事件冒泡...

1879
来自专栏编程直播室

WebGL 动画

1904
来自专栏数据小魔方

rept——一个可以一键成图的神奇函数!

今天想跟大家分享一个特别有趣的函数——rept函数。 ▼ 这个函数,就如同它的名字一样,具有重复显示字符的功能。 如图所示,在A57单元格中有一个数字1,如果我...

3765
来自专栏架构之路

HTML5 自定义属性 data-* 和 jQuery.data 详解

新的HTML5标准允许你在普通的元素标签里,嵌入类似data-*的属性,来实现一些简单数据的存取。它的数量不受限制,并且也能由javascript动态修改,也支...

3415
来自专栏电光石火

Markdown 语法手册 (完整整理版)

1. 斜体和粗体 代码: *斜体*或_斜体_ **粗体** ***加粗斜体*** ~~删除线~~ 显示效果: ...

97011
来自专栏伪君子的梦呓

用 Python 向你比个心

之前写了一篇用 Python 画一个小猪佩奇和哆啦 A 梦,然后最近看到有人用 turtle 画了一个心,觉得挺有意思的,于是把代码复制到本地,再加了个播放音乐...

1903
来自专栏学习力

《Java从入门到放弃》框架入门篇:Struts2的常用基本标签

1555
来自专栏十月梦想

console.log新玩法

console.log支持多样化玩法,这里以console.log的css内容输出为例,也就是console.log()输入多样化内容

1265

扫码关注云+社区

领取腾讯云代金券